首页 > 解决方案 > 连接表并在一行中显示第二个表数据

问题描述

SQL SERVER中,我需要在与另一个表连接时从一个表中输出行数据,并且第二个表中的列数据应该通过单个查询为每个第一个表行用逗号分隔。如果第二个表中没有匹配的行,它应该显示 NULL。以下是表格。

Table 1     Table 2 
ID  Name    Tlb1_ID CITY
1   A       1   ZZ
2   B       1   XX
3   C       2   GG
4   D       2   HH
5   E       3   JJ

我希望输出如下结果

ID  Name CITY
1   A    ZZ,XX
2   B    GG,HH
3   C    JJ
4   D    NULL
5   E    NULL

标签: sql-server

解决方案


Subselect 将返回每个 ID 的逗号分隔的城市名称。这是通过使用for xml pathstuff

stuff((SELECT ',' + city FROM #tbl2 where #tbl2.Tlb1_ID = t1.ID FOR XML PATH ('')),1,1,'') CITY

询问

 select  
     t1.*,
     stuff((SELECT ',' + city FROM #tbl2 where #tbl2.Tlb1_ID = t1.ID FOR XML PATH ('')),1,1,'') CITY
      from #tbl1 t1

推荐阅读