簡體   English   中英

具有不同列數的聯合 ALL

[英]Union ALL with different number of columns

我有一個包含這些列的 Employee 表:

  • 員工ID
  • 全名
  • 電話
  • 部門
  • 團隊
  • Function
  • 經理

和 EmployeeHistory 包含具有不同列的歷史記錄,但有一些共同點:

  • 員工ID
  • 全名
  • Email
  • 地理位置
  • 部門
  • 團隊
  • Function
  • 經理

我怎樣才能聯合他們?

SELECT 
EmployeeId ,
Fullname   ,
'Undefined' AS Email,
Phone      ,
'Undefined' AS Geolocation
Department ,
Team       ,
[Function]   ,
Manager    
FROM Employee

UNION ALL

EmployeeId ,
Fullname   ,
Email      ,
'0000000000' AS Phone,
Geolocation,
Department ,
Team       ,
[Function]   ,
Manager    
FROM EmployeeHistory

您只需要添加null (或合適的值)即可替換不存在的列

select EmployeeId, Fullname, Email, Geolocation, null Phone, Department, Team, function, Manager
from EmployeeHistory
union all
select EmployeeId, Fullname, null,  null, Phone, Department, Team, function, Manager
from Employee

要使用unionunion all列數必須在所有 select 列表中匹配。 為此,您可以使用 null 作為任何 select 列表中缺失列的值。

盡管您已經通過union all得到了答案,但您需要使用 union 而不是存在重復行的任何可能性,並且您只想 select 不同的行。

Select EmployeeId, Fullname, null as Email, Phone, null as Geolocation, Department, Team, Function, Manager from Employee
union
Select EmployeeId, Fullname, Email, null as Phone, Geolocation, Department, Team, Function, Manager from EmployeeHistory 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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