在 SQL Server 2000 中查找特定于部门的员工

发布于 2024-08-26 11:40:36 字数 883 浏览 4 评论 0原文

假设我有一个表 (tblEmp),其结构如下所示

Dept     Emp
-----    ------
d1        e1
d1        e2
d1        e3
d2        e4
d2        e5
d3        e6

如果我需要带来输出,因为

Dept    DepartmentSpecificEmployees
------      ----------------------------    
  d1         e1,e2,e3
  d2         e4,e5
  d3         e6

我会将查询编写为

select 
   Dept, 
   stuff((select ',' + Emp  from tblEmp t2 where t1.Dept = t2.Dept for xml path(''),1,1,'')DepartmentSpecificEmployees
from 
   tblEmp t1
group by  
   Dept

但这将在 SQL Server 2005+ 中工作。

如何在没有任何变量声明、循环或游标的情况下在 SQL Server 2000 中实现相同的效果?

如果我使用 COALESCE 作为替代方案,那么我需要使用一个变量,这将达不到目的

请帮助

Suppose I have a table (tblEmp) whose structure is like as under

Dept     Emp
-----    ------
d1        e1
d1        e2
d1        e3
d2        e4
d2        e5
d3        e6

If I need to bring the output as

Dept    DepartmentSpecificEmployees
------      ----------------------------    
  d1         e1,e2,e3
  d2         e4,e5
  d3         e6

I will write the query as

select 
   Dept, 
   stuff((select ',' + Emp  from tblEmp t2 where t1.Dept = t2.Dept for xml path(''),1,1,'')DepartmentSpecificEmployees
from 
   tblEmp t1
group by  
   Dept

But this will work in SQL Server 2005+.

How can I achieve the same in SQL Server 2000 without any variable declaration or loop or cursor?

If I use COALESCE as an alternative, then I need to use a variable which will defeat the purpose

Please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拒绝两难 2024-09-02 11:40:36

在 SQL Server 2000 中,如果不在 SELECT 中使用标量用户定义函数就无法实现这一点。这个 udf 将有一个局部变量(正如你所提到的)并连接每个分组

select
    Dept, dbo.MyConcatUDF (Dept)
FROM
    (SELECT DISTINCT Dept FROM tblEmp) t1

或者在客户端中执行

You can't in SQL Server 2000 without using a scalar user defined function in the SELECT. This udf will have a local variable (as you have mentioned) and concats each grouping

select
    Dept, dbo.MyConcatUDF (Dept)
FROM
    (SELECT DISTINCT Dept FROM tblEmp) t1

Or do it in the client

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文