Hi,
I had to come back again......
I used below code, only change in what has been suggested earlier is addition of an additional record so that I get duplicate values for 5, Germany, Berlin.
DECLARE @t TABLE( ID INT, ColA nvarCHAR(max), ColB nvarCHAR(max), ColC nVarCHAR(max) )
INSERT INTO @t(ID, ColA, ColB, ColC )
VALUES
( 1, 'India', 'VP', 'Mumbai' ),
( 2, 'Aus', 'Consultant', 'Sydney' ),
( 2, 'Aus', 'VP', 'Melbourne' ),
( 3, 'France', 'Consultant', 'Paris' ),
( 4, 'Swiss', 'SC', 'Zurich' ),
( 4, 'Swiss', 'Consultant', 'Geneva' ),
( 4, 'Swiss', 'VP', 'Lusanne' ),
( 5, 'Germany', 'Consultant', 'Koln' ),
( 5, 'Germany', 'SC', 'Berlin' ),
( 5, 'Germany', 'VP', 'Berlin' );
SELECT a.ID,
a.ColA,
STUFF((SELECT ',' + b.ColB AS "text()"
FROM @t b
WHERE b.ID = a.ID
AND b.ColA = a.ColA
ORDER BY b.ColB
FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') AS ColB,
STUFF((SELECT ',' + b.ColC AS "text()"
FROM @t b
WHERE b.ID = a.ID
AND b.ColA = a.ColA
ORDER BY b.ColC
FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') AS ColC
FROM @t a
GROUP BY a.ID,a.ColA
ORDER BY a.ID,a.ColA;
In output, I want, for last record for column C, to show Berlin Once and twice.
Any suggestions around that one ? As I would have many multiple values in my actual tables and imagine Berlin repeating 5-6 times would look weird.
Last record for column C should be
"Berlin, Koln" and not
"Berlin, Berlin, Koln"
Thanks in advance.