adi*_*tya 3 sql sql-server grouping group-concat
我有一张桌子 Details
DeptId EmpID
------- ---------
1 1
1 5
1 3
2 8
2 9
Run Code Online (Sandbox Code Playgroud)
我想将它们分组为:
DeptId EmpIDs
------- -------
1 1,5,3
2 8,9
Run Code Online (Sandbox Code Playgroud)
我想在SQL Server中使用它.我知道这可以在MySQL中使用Group_Concat函数完成.例如
SELECT DeptId, GROUP_CONCAT(EmpId SEPARATOR ',') EmpIDS
FROM Details GROUP BY DeptId
Run Code Online (Sandbox Code Playgroud)
但是如何使用SQL Server执行此操作?我不知道任何功能.
模拟的一种方式GROUP_CONCAT在SQLServer是使用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)
Run Code Online (Sandbox Code Playgroud)