2012-10-30 128 views
3

我有一個表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做到這一點?我不知道任何功能。

回答

5

一個在SQLServer模擬GROUP_CONCAT的方法是使用CROSS APPLYFOR 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) 
+1

謝謝你這是工作。 – aditya

相關問題