Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSV value in pivot query

here is my table

Manger  EmpID
ABC     5
ABC     6
XYZ     2
XYZ     3

if i use pivot query i am getting below output.

 ABC    XYZ
 6      3

But actually i want such output.

  ABC   XYZ
  5,6   2,3

I dont' want aggregate value, i want csv values. can anyone please help me to get such output. here is my sql code

    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
like image 755
Jigar Parekh Avatar asked Nov 21 '25 11:11

Jigar Parekh


1 Answers

Try this:

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

The trick is to pre-process your table before applying PIVOT. The above query uses FOR XML PATH to create a comma separated list of EmpID values for each Manager.

Demo here

like image 106
Giorgos Betsos Avatar answered Nov 23 '25 03:11

Giorgos Betsos



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!