Friday, 13 May 2016

sql - Denormalize into pipe separated list











I have a tablle like this:




cust acc

-----------
a 1
b 2
b 3
c 4
c 5
c 6


I want to denormalize above into the following form





cust acc
---------------
a 1
b 2|3
c 4|5|6


please note that the acc column should now contain a pipe delimited list of accounts for any customer. Also the possible number of accounts for a customer can be variable.




how to do this using SQL ?


Answer



try this:



SELECT cust, acc = 
STUFF((SELECT '| ' +CAST( acc as varchar(20))
FROM b
WHERE b.cust = a.cust
FOR XML PATH('')), 1, 2, '')

FROM
a
GROUP BY cust





No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...

Blog Archive