将两个表中的列相加然后连接表
Summing columns in two tables then joining tables
我有两个 table 以相同的方式设置,但具有不同的值。以下是每个示例:
表 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
我希望结果 table 包含所有唯一的日期代码对,table 之间的任何重复项具有两个总和的计数。
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
我没有连接两个 table 的主键,我尝试的连接要么没有保留所有不同的日期代码对,要么创建了重复项。
作为参考,我在 SAS proc sql 语句中执行此操作。
我现在在路上,所以我还没有运行这个,但是:
SELECT date ,
code ,
SUM([count])
FROM ( SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
) [tables]
GROUP BY date ,
code
ORDER BY date ,
code
会成功的。当我在一台合适的电脑前
时,我会破解加入版本并编辑这个post
编辑:
完全外部联接和 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)
我有两个 table 以相同的方式设置,但具有不同的值。以下是每个示例:
表 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
我希望结果 table 包含所有唯一的日期代码对,table 之间的任何重复项具有两个总和的计数。
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
我没有连接两个 table 的主键,我尝试的连接要么没有保留所有不同的日期代码对,要么创建了重复项。
作为参考,我在 SAS proc sql 语句中执行此操作。
我现在在路上,所以我还没有运行这个,但是:
SELECT date ,
code ,
SUM([count])
FROM ( SELECT *
FROM table1
UNION ALL
SELECT *
FROM table2
) [tables]
GROUP BY date ,
code
ORDER BY date ,
code
会成功的。当我在一台合适的电脑前
时,我会破解加入版本并编辑这个post编辑:
完全外部联接和 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)