sql-serverstring-aggregationsql-server-group-concat

How to make a query with group_concat in sql server


I know that in sql server we cannot use Group_concat function but here is one issue i have in which i need to Group_Concat my query.I google it found some logic but not able to correct it.My sql query is

select  m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid 
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;

It gives me result like

enter image description here

Just look first 3 rows In that maskid,maskname,schoolid,schoolname is same but maskdetail is different so want to one row for that in which last column can contain all maskdetails as per maskid and so on.

I want my output like

enter image description here

And so on. So please help me while making a query for that.


Solution

  • Query:

    SELECT
          m.maskid
        , m.maskname
        , m.schoolid
        , s.schoolname
        , maskdetail = STUFF((
              SELECT ',' + md.maskdetail
              FROM dbo.maskdetails md
              WHERE m.maskid = md.maskid
              FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
    FROM dbo.tblmask m
    JOIN dbo.school s ON s.ID = m.schoolid
    ORDER BY m.maskname
    

    Additional information:

    String Aggregation in the World of SQL Server