sql-server - 连接来自 SQL Server 中不同表的列
问题描述
我正在尝试从不同的表中选择列并创建一个新表,例如“test”。如果插入表中的“操作员”和“数据”列的输入:“忙碌”、“登录”无法从“Atendidas”表中找到相同列的输入,则显示 NULL。这可能很简单,但我无法真正到达那里。
我想要的是以下示例:
表附录:
ID Ano Mes Data Operador Atendidas
1 2020 JANEIRO 2020 2020/01/01 CCTLT413 30
2 2020 JANEIRO 2020 2020/01/01 CCVTH2498 31
3 2020 JANEIRO 2020 2020/01/01 XKELB80 27
4 2020 JANEIRO 2020 2020/01/01 XKELI28 29
5 2020 JANEIRO 2020 2020/01/01 XKELN94 24
表忙:
ID Ano Mes Data Operador Busy
1 2020 JANEIRO 2020 2020/01/01 CCTLT413 6812
2 2020 JANEIRO 2020 2020/01/01 CCTL200 3245
3 2020 JANEIRO 2020 2020/01/01 XKELB80 12305
4 2020 JANEIRO 2020 2020/01/01 XKELI28 7764
5 2020 JANEIRO 2020 2020/01/01 XKELN94 6014
表登录:
ID Ano Mes Data Operador Login
1 2020 JANEIRO 2020 2020/01/01 CCTLT413 19475
2 2020 JANEIRO 2020 2020/01/01 CCVTH2498 20209
3 2020 JANEIRO 2020 2020/01/01 XKELB80 21625
4 2020 JANEIRO 2020 2020/01/01 XKELI28 21175
5 2020 JANEIRO 2020 2020/01/01 XKV220 22121
测试:
ID Data Operador Atendidas Busy Login
1 2020/01/01 CCTLT413 30 6812 19475
2 2020/01/01 CCVTH2498 31 *NULL* 20209
3 2020/01/01 XKELB80 27 12305 21625
4 2020/01/01 XKELI28 29 7764 21175
5 2020/01/01 XKELN94 24 6014 *NULL*
解决方案:
这行得通,我必须离开加入我没有做的数据。:
SELECT A.Data, A.Operador, A.Atendidas, B.Busy, B.Login
from Atendidas as A
left join [Busy] as B on B.Operador = A.Operador
and B.Data = A.Data
left join [Login] as L on L.Operador = A.Operador
and L.Data = A.Data;
解决方案
使用联合连接表应该关联您可以从中选择的数据。这是假设每个表中没有重复项,然后可以使用 SUM 和 Group Bys 对其进行管理。
SELECT * FROM
(
SELECT Id, Data, Operador, Atendidas, NULL Busy, NULL Login FROM Atendidas
UNION
SELECT Id, Data, Operador, NULL Atendidas, Busy, NULL Login FROM Busy
UNION
SELECT Id, Data, Operador, NULL Atendidas, NULL Busy, Login FROM Login
)
您也可以尝试以下操作,这是假设 Id 相同,但您也可以加入 Operator 列。数据中有很多假设。
SELECT a.Id, a.Data, a.Operador, a.Atendidas, b.Busy, l.Login
FROM Atendidas a
INNER JOIN Busy b ON a.Id = b.Id
INNER JOIN Login l ON a.Id = l.Id