【发布时间】:2021-07-30 20:11:01
【问题描述】:
我有 3 张桌子。
Table1 字段
- 员工编号
- 第 1 年销售额
Table2 字段
- 员工编号
- Year2Sales
Table3 字段
- 员工编号
- 第三年销售额
我想要的输出是一个表,每个 EmployeeId 一行。
输出表字段
- 员工编号
- 第 1 年销售额
- Year2Sales
- 第三年销售额
问题是给定的员工可能只出现在这些表之一中。我尝试使用如下的FULL JOIN,但如果所有 3 个表中都不存在,我会为每个员工获得多行。
SELECT COALESCE(T1.EmployeeId, T2.EmployeeId, T3.EmployeeId),
Year1Sales,
Year2Sales,
Year3Sales,
FROM Table1 AS T1 FULL JOIN Table2 AS T2 ON T1.EmployeeId = T2.EmployeeId
FULL JOIN Table3 AS T3 ON T1.EmployeeId = T3.EmployeeId
在Table1、Table2 和Table3 中,每个EmployeeId 只有一行。
例如,如果员工只在第 2 年和第 3 年出现,我会得到以下错误输出:
EmployeeId Year1Sales Year2Sales Year3Sales
1 NULL 1000 NULL
1 NULL NULL 2000
如何将这 3 个表连接在一起并且每个员工只有一行?
【问题讨论】:
-
我们需要一个minimal reproducible example 即示例数据,可以理想地说明问题为 DDL+DML。
标签: sql sql-server tsql