SQL 选择一列中的多行

标签 sql sql-server sql-server-2008 tsql

我有表TestTable

ID Name
-------
1  A
1  B
1  C 
2  D 
2  E
3  F

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

ID Name
----------    
1   A,B,C
2   D,E
3   F

请有人帮我写这个查询。

最佳答案

据我所知,没有本地方法可以做到这一点。但是,您可以使用 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;

SQL Fiddle Demo

这会给你:

| ID |   NAMES |
----------------
|  1 | A, B, C |
|  2 |    D, E |
|  3 |       F |

关于SQL 选择一列中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065277/

相关文章:

sql - 在 SQL Server 的 WHERE 子句中使用 DATETIME

sql - SQL WHERE 子句中的 IF 语句

mysql - SQL 的错误代码 #1111

sql - '1' 附近的语法不正确。 SQL Pivot 需要 ID、QUOTED_ID 或 '.' 错误

SQL Server 按列对查询

android - GTFS 数据馈送服务器

mysql - 如何使用 SQL 查询计算计费通话费用

sql - 不同的房型

sql - 给每个group id设置group的最大值

mysql - 在 WHERE 子句中确定 CaseSensitive