连接表并将结果从一个结合到gridview中

时间:2017-01-08 06:40:29

标签: sql-server sql-server-2008

我需要连接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

2 个答案:

答案 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;

有关STUFFFOR 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