如何将每个组的结果放在一行?

时间:2013-12-09 19:55:55

标签: sql-server tsql

select id, productid, optionid 
from tableA
where productid = 1

结果(id,productid,optionid)

1 1 1
2 1 2
3 1 5

我希望结果是(productid,optionids):

1 1,2,5

当然,我认为下面的查询应该产生上述结果

select productid, optionid 
from tableA
group by productid 

但是我把optionid放在哪个函数中?

1 个答案:

答案 0 :(得分:1)

您可以使用FOR XML PATH(在STUFF函数的帮助下)来执行此操作。你不能分组,因为遗憾的是没有用于连接字符串的聚合函数。

select distinct a.productid,
stuff((select ','+cast(s.optionid as varchar(10))
       from tableA s 
       where s.productid = a.productid 
       for XML path('')),1,1,'')
from tableA a

SQL Fiddle demo