每个部门的集团员工
Posted
技术标签:
【中文标题】每个部门的集团员工【英文标题】:Group Employee for each Department 【发布时间】:2012-10-19 09:55:20 【问题描述】:我有一张桌子Details
DeptId EmpID
------- ---------
1 1
1 5
1 3
2 8
2 9
我想像这样对它们进行分组:
DeptId EmpIDs
------- -------
1 1,5,3
2 8,9
我想在 SQL Server 中使用它。我知道这可以在 mysql 中使用Group_Concat
函数来完成。例如
SELECT DeptId, GROUP_CONCAT(EmpId SEPARATOR ',') EmpIDS
FROM Details GROUP BY DeptId
(SQL Fiddle here)
但是如何使用 SQL Server 做到这一点?我不知道任何功能。
【问题讨论】:
【参考方案1】:在SQLServer
中模拟GROUP_CONCAT
的一种方法是使用CROSS APPLY
和FOR XML PATH()
select a.[DeptId], SUBSTRING(d.detailsList,1, LEN(d.detailsList) - 1) detailsList
from
(
SELECT DISTINCT [DeptId]
FROM details
) a
CROSS APPLY
(
SELECT [EmpID] + ', '
FROM details AS B
WHERE A.[DeptId] = B.[DeptId]
FOR XML PATH('')
) D (detailsList)
See SQLFiddle Demo
See SQLFiddle Demo (order by EmpID)
【讨论】:
以上是关于每个部门的集团员工的主要内容,如果未能解决你的问题,请参考以下文章