SQL - 合并具有一列差异的两个查询
SQL - Merging two queries that have one column difference
我有两个 SQL 查询给我这样的结果:
Employee id | Week | SUM(Qty sold)
1 42 2
3 38 15
Employee id | Week | SUM(Qty bought)
1 42 5
2 35 10
3 42 6
当我执行完全外部联接时,我得到:
Employee id | Week | SUM(Qty sold) | Employee id | Week | SUM(Qty bought)
1 42 2 1 42 5
2 35 10 null null null
3 38 15 null null null
null null null 3 42 6
但我想做但不知道怎么做的是:
Employee id | Week | SUM(Qty sold) | SUM(Qty bought)
1 42 2 5
2 35 null 10
3 38 15 null
3 42 null 6
最终目标是添加另一列售出 - 购买。
我的真实表格比那更复杂,但我认为这样更容易理解(而且我也不能分享它们)。
如果有人能指出正确的方向,我昨天整个下午都在为这个问题拔头发。
谢谢
PS:我不知道这是否会改变什么,但我正在使用 teradata。
你需要COALESCE
。试一试:
SELECT COALESCE(t1.EmployeeID, t2.EmployeeID)
,COALESCE(t1.Week,.t2.Week)
,SUM(Qty sold)
,SUM(Qty bought)
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.EmployeeID= t2.EmployeeID
我有两个 SQL 查询给我这样的结果:
Employee id | Week | SUM(Qty sold)
1 42 2
3 38 15
Employee id | Week | SUM(Qty bought)
1 42 5
2 35 10
3 42 6
当我执行完全外部联接时,我得到:
Employee id | Week | SUM(Qty sold) | Employee id | Week | SUM(Qty bought)
1 42 2 1 42 5
2 35 10 null null null
3 38 15 null null null
null null null 3 42 6
但我想做但不知道怎么做的是:
Employee id | Week | SUM(Qty sold) | SUM(Qty bought)
1 42 2 5
2 35 null 10
3 38 15 null
3 42 null 6
最终目标是添加另一列售出 - 购买。 我的真实表格比那更复杂,但我认为这样更容易理解(而且我也不能分享它们)。
如果有人能指出正确的方向,我昨天整个下午都在为这个问题拔头发。
谢谢
PS:我不知道这是否会改变什么,但我正在使用 teradata。
你需要COALESCE
。试一试:
SELECT COALESCE(t1.EmployeeID, t2.EmployeeID)
,COALESCE(t1.Week,.t2.Week)
,SUM(Qty sold)
,SUM(Qty bought)
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.EmployeeID= t2.EmployeeID