[英]UNION ALL not working with different columns
同一列中的左連接行和右表行
我有兩張桌子(經理和工人)。 經理下的工人姓名應在經理姓名之下。 預期的 output 如下所示:-
Manager Table:
ManagerCode Name Age Location
1 Chris 52 A
2 Rick 55 B
3 David 50 C
Worker Table
ManagerCode WName Age
1 Harry 33
1 Phil 40
2 Johnny 28
2 Jeff 47
Expected table:
ManagerCode Name Location
1 Chris A
1 Harry A
1 Phil A
2 Rick B
2 Johnny B
2 Jeff B
3 David C
由於列數不同,Union All 正在為 Location 列創建問題。 我可以使用 null 作為工作表的位置。 但是Manager中有幾個列,例如位置。 工會是正確的選擇嗎?
您需要加入 Worker 和 Manager 表以從相應的經理那里獲取工人的位置代碼。 然后你可以將它與經理表聯合起來。
SELECT ManagerCode, Name, Location
FROM (
SELECT ManagerCode, Name, Location, 1 AS isManager
FROM Manager
UNION ALL
SELECT w.ManagerCode, w.Name, m.Locationm, 0 AS isManager
FROM Worker AS w
JOIN Manager AS m ON w.ManagerCode = m.ManagerCode
) AS x
ORDER BY ManagerCode, isManager DESC
isManager
列用於將工人排在經理之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.