簡體   English   中英

UNION ALL 不適用於不同的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM