Friday, 28 April 2017

sql server - comma delimited list as a single string, T-SQL




My T-SQL query generates following result set



ID        Date
756 2011-08-29

756 2011-08-31
756 2011-09-01
756 2011-09-02


How can I convert like this



ID                Date
756 2011-08-29, 2011-08-31, 2011-09-01, 2011-09-02



Any suggestion would be appreciated.


Answer



You could use FOR XML PATH and STUFF to concatenate the multiple rows into a single row:



select distinct t1.id,
STUFF(
(SELECT ', ' + convert(varchar(10), t2.date, 120)
FROM yourtable t2
where t1.id = t2.id

FOR XML PATH (''))
, 1, 1, '') AS date
from yourtable t1;


See SQL Fiddle with Demo


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...