数据透视查询中的CSV值

时间:2016-02-17 14:28:40

标签: sql sql-server csv pivot

这是我的表

Manger  EmpID
ABC     5
ABC     6
XYZ     2
XYZ     3

如果我使用数据透视查询,我会低于输出。

 ABC    XYZ
 6      3

但实际上我想要这样的输出。

  ABC   XYZ
  5,6   2,3

我不会'想要聚合值,我想要csv值。 任何人都可以帮助我得到这样的输出。 这是我的sql代码

    Select * 
INTO #TEMP
FROM 
(SELECT 'ABC' As Manger , 5 as EmpID
union
SELECT 'ABC' As Manger , 6 as EmpID
union
SELECT 'XYZ' As Manger , 2 as EmpID
union
SELECT 'XYZ' As Manger , 3 as EmpID
) A

select * 
FROM #TEMP



select * 
FROM #TEMP
PIVOT
(
    MAX([EmpID])
    FOR Manger IN ([ABC],[XYZ])
) as P

drop table #TEMP

1 个答案:

答案 0 :(得分:3)

试试这个:

SELECT * 
FROM (
   SELECT DISTINCT Manager, 
          STUFF((SELECT ',' + CAST(EmpID AS VARCHAR(MAX)) AS [text()]
                 FROM #TEMP AS t2
                 WHERE t1.Manager = t2.Manager
                 FOR XML PATH('')), 1, 1, '') AS EmpID
   FROM #TEMP AS t1) AS SRC       
PIVOT
(
    MAX([EmpID])
    FOR Manager IN ([ABC],[XYZ])
) as P

诀窍是在应用PIVOT之前预先处理您的表格。上述查询使用FOR XML PATH为每个EmpID创建逗号分隔的Manager值列表。

Demo here