SQL 服务器 UNION SUM 遗漏重复值

SQL Server UNION SUM misses repeated values

我有 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

我发现当一个值被重复而不是求和时,它会使用重复值之一,例如第 3 天的值都为 5。该指令将只给出值 5 而不是 10。

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

你应该做

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

union all 保留重复项。

正如您所注意到的,

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

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