sql-server - 连接表并在一行中显示第二个表数据
问题描述
在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
解决方案
Subselect 将返回每个 ID 的逗号分隔的城市名称。这是通过使用for xml path
和stuff
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
推荐阅读
- firebase - 将集合设置为子集合
- mysql - PHPMyadmin 导出数据库非常慢
- mysql - Spring Data JPA 中的内连接查询和基于接口的投影
- python-2.7 - 使用非 ascii 字符将重音字符替换为非重音字符的解决方法
- java - 向图形添加功能
- java - 共享相同模型的重复 TableView
- php - 使用php在csv文件中连续添加2列
- scala - scala中“map”的通用容器类型(更高类型)
- python - 使用具有多个预处理功能的 keras ImageDataGenerator
- javascript - 为什么要在 redux store 中放置同步状态?