我有两个表以相同的方式设置,但具有不同的值。以下是各自的样本:
表1:
Date Code Count
1/1/2015 AA 4
1/3/2015 AA 2
1/1/2015 AB 3
表2:
Date Code Count
1/1/2015 AA 1
1/2/2015 AA 0
1/4/2015 AB 2
我希望结果表包含所有唯一的日期代码对,并且两个总计的计数表之间有任何重复。
Output_Table:
Date Code Count
1/1/2015 AA 5 /*Summed because found in Table1 and Table2*/
1/2/2015 AA 0
1/3/2015 AA 2
1/1/2015 AB 3
1/4/2015 AB 2
我没有连接这两个表的主键,我尝试过的连接要么没有保留所有不同的日期代码对,要么创建了重复项。
作为参考,我在SAS proc sql语句中执行此操作。
答案 0 :(得分:1)
我现在正在路上所以我没有跑过这个,但是:
SELECT date ,
code ,
SUM([count])
FROM ( SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
) [tables]
GROUP BY date ,
code
ORDER BY date ,
code
会做的伎俩。当我走进一台合适的计算机时,我会对连接版本有所了解并编辑这篇文章
编辑:
全外连接和COALESCE也会这样做,虽然速度稍慢,所以它可能取决于你在那里还有什么!
SELECT COALESCE(#table1.date, #table2.date) ,
COALESCE(#table1.code, #table2.code) ,
ISNULL(#table1.COUNT, 0) + ISNULL(#table2.COUNT, 0)
FROM #table1
FULL OUTER JOIN #table2 ON #table2.code = #table1.code
AND #table2.date = #table1.date
ORDER BY COALESCE(#table1.date, #table2.date) ,
COALESCE(#table1.code, #table2.code)