SQL Server UNION SUM错过了重复的值

时间:2015-08-17 16:28:10

标签: sql sum union

我有3个独立的查询,我想将每个查询中获得的值相加。这些查询获得每月每天的计数值:

查询一个

day|val| 
1  | 2 
2  | 6 
3  | 5* 
4  | 2 
5  | 7

查询2

day|val|
2  | 1
3  | 5*
10 | 5
11 | 2
12 | 7

我正在使用说明:

select day, SUM(val) 
from query1 UNION query2
group by day

我发现当重复一个值而不是一个值时,它会使用其中一个重复值,对于axample,天数3都有值5.该指令只给出值5而不是10。

这应该会给我一个月内每天总价值的报告,但报告错误是因为UNION引起的这个问题 我该如何解决?

2 个答案:

答案 0 :(得分:1)

正如您所注意到的,

union会删除重复项。相反,您应该使用union all

SELECT   day, SUM(val) 
FROM     query1 UNION ALL query2
GOURP BY day

答案 1 :(得分:0)

你应该做

select day, sum(val) 
from (
select day,val from table1
union all
select day,val from table2) t
group by day;

union all保留重复项。