SQL Server:在一个select语句中选择多个记录

Sam*_*Sam 0 sql sql-server select

在像这样的查询中:

SELECT * 
FROM `Order`
WHERE `CustID` = '1'
Run Code Online (Sandbox Code Playgroud)

我的结果显示如下:

| CustID| Order |
-----------------
| 1     | Order1|
| 1     | Order2|
| 1     | Order3|
-----------------
Run Code Online (Sandbox Code Playgroud)

如何编写SQL语句,以获得这样的结果?:

| CustID| Order                 |
---------------------------------
| 1     | Order1, Order2, Order3|
---------------------------------
Run Code Online (Sandbox Code Playgroud)

在mySQL中它是可能的Group_Concat,但在SQL Server中它会出现语法错误或其他错误.

art*_*rtm 6

使用xml路径(参见小提琴)

SELECT distinct custid, STUFF((SELECT ',' +[order]
FROM table1 where custid = t.custid
FOR XML PATH('')), 1, 1, '')
FROM table1 t
where t.custid = 1
Run Code Online (Sandbox Code Playgroud)

STUFF用,空字符串替换第一个字符串,即删除它.你需要一个独特的,否则它将匹配所有订单,因为在哪里是custid.

FOR XML
PATH模式
STUFF