SQL在一列中选择多行

Gul*_*rej 10 sql t-sql sql-server sql-server-2008

我有表TestTable

ID Name
-------
1  A
1  B
1  C 
2  D 
2  E
3  F
Run Code Online (Sandbox Code Playgroud)

我想在SQL Server 2008中编写一个将返回的查询

ID Name
----------    
1   A,B,C
2   D,E
3   F
Run Code Online (Sandbox Code Playgroud)

请有人帮我写这个查询.

Mah*_*mal 16

AFAIK,没有本土方式这样做.但是,您可以FOR XML像这样使用:

SELECT 
  t1.Id,
  STUFF((
    SELECT ', ' + t2.name  
    FROM Table1 t2
    WHERE t2.ID = t1.ID
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Table1 t1
GROUP BY t1.Id;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

这会给你:

| ID |   NAMES |
----------------
|  1 | A, B, C |
|  2 |    D, E |
|  3 |       F |
Run Code Online (Sandbox Code Playgroud)

  • @Gulrej如果此解决方案解决了您的问题,请考虑将其标记为正确答案. (2认同)