Sql列分组

Sql列分组,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,可能重复: 我有一个名为SkillSets的表,其中有一个SkillID字段和一个SkillSetID字段。假设我在该表中有如下记录: SkillID SkillSetID ------- ---------- 750 2 750 4 750 5 751 3 751 4 751 6 我需要一个生成以下内容的查询: SkillID SkillSetIDs ------- ---------- 750 2,4,5 75

可能重复:

我有一个名为
SkillSets
的表,其中有一个
SkillID
字段和一个
SkillSetID
字段。假设我在该表中有如下记录:

SkillID  SkillSetID
-------  ----------
750      2
750      4
750      5
751      3
751      4
751      6
我需要一个生成以下内容的查询:

SkillID  SkillSetIDs
-------  ----------
750      2,4,5
751      3,4,6

在我看来,我记得看到它使用了某种xml子句,但找不到任何关于它的信息,只是不知道如何在不使用游标或while循环的情况下完成它。您能帮忙吗?

在MySQL中,这将起作用:

SELECT SkillID, GROUP_CONCAT(SkillSetID) As SkillSetIDs
FROM skills
GROUP BY SkillID

但是,
GROUP\u CONCAT
是特定于MySQL的,所以如果您使用的是不同的数据库,它就不会飞了。

这对您有帮助吗

select 'test' as Test, 1 as Item 
into #test 
union select 'test2', 2 
union select 'test', 3 
union select NUll, 4 
union select 'test', 5 

select t2.test, STUFF((SELECT  ', ' + cast(t1.Item as varchar (10) )
        FROM #test t1 where t2.test = t1.test 
        FOR XML PATH('')), 1, 1, '') 
     from #test t2
     group by t2.test  
查询:

结果:

| SKILLID | SKILLSETIDS |
-------------------------
|     750 |       2,4,5 |
|     751 |       3,4,6 |

您需要执行字符串串联聚合操作。这是高度特定于数据库的。您使用的是哪个引擎?如果您使用的是TSQL:Sql Server 2008 R2。所以,使用某种XML子句没有什么值得注意的?谢谢你的回复。
| SKILLID | SKILLSETIDS |
-------------------------
|     750 |       2,4,5 |
|     751 |       3,4,6 |