我的T_Award数据表的内容是这个样子
我使用了这样的SQL函数使数据这样分组的显示出来了select typename, awardname = stuff((select ',' + awardname from T_Award t where typename = T_Award.typename for xml path('')) , 1 , 1 , '')
from T_Award
group by typename
结果是这个样子
然后我在使用一个多表查询的时候使用的SQL语句是这个样子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='优秀主持人奖';
这样我的查询结果是这个样子然后我想仿照着第一个例子的语句使我的数据这样显示写了一下午了,就是仿照不出来,只能请大家帮帮忙了。谢谢~~~~

解决方案 »

  1.   


    ;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