数据透视查询中的 CSV 值
CSV value in pivot query
这是我的 table
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
试试这个:
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
之前预处理您的 table。上面的查询使用 FOR XML PATH
为每个 Manager
.
创建一个 EmpID
值的逗号分隔列表
这是我的 table
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
试试这个:
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
之前预处理您的 table。上面的查询使用 FOR XML PATH
为每个 Manager
.
EmpID
值的逗号分隔列表