假设我有一个表(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作为替代,那么我需要使用一个会破坏目的的变量
请帮忙
答案 0 :(得分:2)
如果没有在SELECT中使用标量用户定义函数,则无法在SQL Server 2000中使用。这个udf将有一个局部变量(正如你所提到的)并对每个分组进行连接
select
Dept, dbo.MyConcatUDF (Dept)
FROM
(SELECT DISTINCT Dept FROM tblEmp) t1
或者在客户端
中进行