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

时间:2010-03-24 04:21:14

标签: sql tsql sql-server-2000 concatenation

假设我有一个表(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作为替代,那么我需要使用一个会破坏目的的变量

请帮忙

1 个答案:

答案 0 :(得分:2)

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

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

或者在客户端

中进行