合并两个SQL查询到一行
问题描述:
我在我的数据库中的两个表:合并两个SQL查询到一行
表1:
| id | name |
+--------+------------+
| 100 | john |
| 200 | Ali |
表2:
| id | account | bank |
+------+-----------+--------+
| 100 | AAAAAAA | bnk1 |
| 100 | BBBBBBB | bnk2 |
| 200 | XXXXXXX | bnk1 |
这意味着 “约翰” 有两个不同银行的两个不同账户
现在我想要一个查询来显示:
| id | tab2 |
+------+----------------------------+
| 100 | AAAAAAAbank1 - BBBBBBBbnk2 |
| 200 | XXXXXXXbnk1 |
这可能吗?
答
假设你正在使用的MS SQL Server
SELECT DISTINCT
Table1.id,
LEFT(STUFF((SELECT account + bank + '-' FROM Table2 WHERE id = Table1.id FOR XML PATH ('')), 1, 1, ''),LEN(STUFF((SELECT account + bank + '-' FROM Table2 WHERE id = Table1.id FOR XML PATH ('')), 1, 1, ''))-1)
FROM Table1
JOIN Table2
ON Table1.id = Table2.id
是的,这是可能的。但是在数据库上这样做并不是一个好习惯,并且根据您拥有的数据库平台(您需要添加适当的标记),您使用的确切机制(sql代码)会有很大差异。 –
你正在使用哪个db。? – scaisEdge
[连接行值T-SQL]的可能重复(https://*.com/questions/1874966/concatenate-row-values-t-sql) –