GROUP BY but get all values from other column

后端 未结 3 1897
不思量自难忘°
不思量自难忘° 2020-12-13 17:33

I\'\'ll explain what I need to do on example. First of all, we have a simple table like this one, named table:

id | name
===+=====
1  | foo
1  | bar         


        
3条回答
  •  北荒
    北荒 (楼主)
    2020-12-13 18:21

    For SQL Server (before 2017) use FOR XML clause and STUFF() function for that:

    SELECT distinct id, name = 
        STUFF((SELECT ' , ' + name
               FROM Table1 b 
               WHERE b.id = a.id 
              FOR XML PATH('')), 1, 2, '')
    FROM Table1 a
    GROUP BY id;
    

    UPDATE

    With SQL Server 2017, you can simply use STRING_AGG() function to achieve that:

    SELECT ID, STRING_AGG (name, ', ') AS Name
    FROM Table1
    GROUP BY ID
    

    See this SQLFiddle

提交回复
热议问题