![](/img/trans.png)
[英]Merge two columns from two tables in one SQL query and use value in tables as column name
[英]SQL query merge two columns from two tables in one column of resulting table?
我有以下表格:
T1
ID
1
2
3
T2
ID SERVICE
1 PSTN
1 ADSL
3 ADSL
T3
ID DEV
1 3G
3 2G
我想作為輸出
ID SERVICE/DEV
1 PSTN
1 ADSL
1 3G
2
3 ADSL
3 2G
如何合並?
我不能使用經典的LEFT OUTER JOIN
。
輸出表中一個id的總數應該是T2+T3 (FOR ID=1 2+1=3)
的摘要T2+T3 (FOR ID=1 2+1=3)
但是對於ID=2
它也應該存在於具有空白第二列的表輸出中。
你可以簡單地使用子查詢中的union
將兩個表的結果(特別是T2
和T3
結合起來,然后使用LEFT JOIN
將它與T1
連接起來。 嘗試這個,
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
此外,如果要自定義具有null
值的列,則可以使用COALESCE
。 因此,在下面的示例中,由於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
你想要工會/工會嗎?
select *
from ((select id, service
from t2
) union all
(select id, service
from t3
) union all
(select id, NULL as service
from t1
where t1.id not in (select id from t2) and
t1.id not in (select id from t3)
)
) t
WHERE
子句中的NOT IN
可能不是最有效的方法。 但這是你的目標嗎?
你可以試試這個。
SELECT T1.ID, service "SERVICE/DEV"
FROM T1, T2
WHERE T1.ID = T2.ID(+)
UNION
SELECT T1.ID, dev "service/dev"
FROM T1, T3
WHERE T1.ID = T3.ID(+);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.