【问题标题】:CSV value in pivot query数据透视查询中的 CSV 值
【发布时间】:2016-02-17 14:28:40
【问题描述】:

这是我的桌子

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

【问题讨论】:

    标签: sql sql-server csv pivot


    【解决方案1】:

    试试这个:

    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 为每个Manager 创建一个逗号分隔的EmpID 值列表。

    Demo here

    【讨论】:

    • 感谢 giorgos 的解决方案
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多