3

私はテーブルを持っていますDetails

DeptId        EmpID
-------      ---------
1             1
1             5
1             3
2             8
2             9

私はそれらをこのようにグループ化したい:

DeptId      EmpIDs
-------    -------
 1          1,5,3
 2          8,9

これはSQLServerで必要です。これはMySQLで関数を使用して実行できることを知っていGroup_Concatます。例えば

SELECT DeptId, GROUP_CONCAT(EmpId SEPARATOR ',') EmpIDS
FROM Details GROUP BY DeptId

(SQLフィドルはこちら)

しかし、SQL Serverでこれを行う方法は?機能がわかりません。

4

1 に答える 1

5

でシミュレートする1​​つのGROUP_CONCAT方法SQLServerCROSS 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) 
于 2012-10-30T04:26:02.473 に答える