我需要连接2个表,第一个表将为每个查询返回1行,但第2个表有1行或更多行,我想要组合并在第1个表的一个结果中给出一个值。对于下面的数据集,我想只返回2行,VideoName为1和2,然后是每个视频发送到的personId。因此,视频1被发送给人3,而人4是第一行。视频2仅发送给第4人。
表1
VideoId Videoname
1 Video1
2 Video2
Table 2
SendId VideoId PersonId
1 1 4
2 1 3
3 2 4
期望的输出
VideoName Sent to
Video1 4 and 3
Video2 4
答案 0 :(得分:2)
试试这个:
select t1.*,
stuff((select distinct ' and ' + convert(varchar(10),personId)
from table2 t2 where t1.videoid = t2.videoId
for xml path('')),
1,5,'')
from table1 t1;
有关STUFF
和FOR XML PATH
的更多信息:
答案 1 :(得分:1)
使用带有东西的Xml路径
SELECT DISTINCT VIDEONAME, STUFF((SELECT ','+CAST(PERSONID AS VARCHAR(30)) FROM TABLE2 T2 WHERE T1.VIDEOID=T2.VIDEOID FOR XML PATH('')
),1,1,'') FROM TABLE1 T1