当前位置: 代码迷 >> Sql Server >> 关于多数据表查询,子查询,其后对结果进行分组
  详细解决方案

关于多数据表查询,子查询,其后对结果进行分组

热度:42   发布时间:2016-04-27 11:17:39.0
关于多数据表查询,子查询,然后对结果进行分组
我的T_Award数据表的内容是这个样子


我使用了这样的SQL函数使数据这样分组的显示出来了
SQL code
select typename, awardname = stuff((select ',' + awardname from T_Award t where typename = T_Award.typename for xml path('')) , 1 , 1 , '')from T_Awardgroup by typename


结果是这个样子


然后我在使用一个多表查询的时候使用的SQL语句是这个样子
SQL code
select a.personName,d.awardName ,c.activityName,d.typeName            from T_Person a            join T_PersonAwardR b            on a.id=b.personId            join T_Activity c            on b.activityId=c.id            join T_Award d            on d.id=b.awardId            where c.activityName='万人长跑大赛' and d.typeName='优秀主持人奖';


这样我的查询结果是这个样子



然后我想仿照着第一个例子的语句使我的数据这样显示

写了一下午了,就是仿照不出来,只能请大家帮帮忙了。谢谢~~~~


------解决方案--------------------
SQL code
;with cte as(    select a.personName,d.awardName ,c.activityName,d.typeName                from T_Person a                join T_PersonAwardR b                on a.id=b.personId                join T_Activity c                on b.activityId=c.id                join T_Award d                on d.id=b.awardId                where c.activityName='万人长跑大赛' and d.typeName='优秀主持人奖';)select distinct awardName, 获奖人员名单=stuff((select ','+personName from cte where t.awardName=awardName for xml path('')),1,1,'') from cte t
  相关解决方案