我有以下表格:
T1
ID
1
2
3
Run Code Online (Sandbox Code Playgroud)
T2
ID SERVICE
1 PSTN
1 ADSL
3 ADSL
Run Code Online (Sandbox Code Playgroud)
T3
ID DEV
1 3G
3 2G
Run Code Online (Sandbox Code Playgroud)
我想作为输出
ID SERVICE/DEV
1 PSTN
1 ADSL
1 3G
2
3 ADSL
3 2G
Run Code Online (Sandbox Code Playgroud)
如何合并?
我不能用经典LEFT OUTER JOIN.
输出表中一个id的总数应该是摘要,T2+T3 (FOR ID=1 2+1=3)但是对于ID=2它也应该存在于具有空白第二列的表输出中.
你可以简单地结合具体的两个表的结果T2,并T3使用union子查询后用加入它的内部T1使用LEFT JOIN.试试这个,
SELECT t1.ID, b.Service
FROM T1 LEFT JOIN
(
SELECT ID, Service FROM T2
UNION ALL
SELECT ID, Dev AS Service FROM T3
) b ON t1.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
此外,COALESCE如果要自定义具有null值的列,则可以使用.因此,在下面的例子中,因为2有没有服务,它会显示-none-,而不是null
SELECT t1.ID, COALESCE(b.Service, '-none-') Service
FROM T1 LEFT JOIN
(
SELECT ID, Service FROM T2
UNION ALL
SELECT ID, Dev AS Service FROM T3
) b ON t1.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16422 次 |
| 最近记录: |