我的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