SQL Server UNION SUM错过了重复的值

SQL Server UNION SUM misses repeated values

本问题已经有最佳答案,请猛点这里访问。

我有3个独立的查询,我想对每个查询中获得的值求和。这些查询获取每月的每一天的计数值:

查询一

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

查询2

1
2
3
4
5
6
DAY|val|
2  | 1
3  | 5*
10 | 5
11 | 2
12 | 7

我正在使用说明:

1
2
3
SELECT DAY, SUM(val)
FROM query1 UNION query2
GROUP BY DAY

我发现当一个值被重复而不是求和时,它将使用一个重复的值,对于axample,days number 3都有值5。指令只给出值5而不是10。

这本应该给我一个月内每天的总价值的报告,但是由于工会造成的这个问题,报告是错误的。我怎么修?


正如您注意到的,union删除了重复项。相反,您应该使用union all

1
2
3
SELECT   DAY, SUM(val)
FROM     query1 UNION ALL query2
GOURP BY DAY


你应该做

1
2
3
4
5
6
SELECT DAY, SUM(val)
FROM (
SELECT DAY,val FROM table1
UNION ALL
SELECT DAY,val FROM table2) t
GROUP BY DAY;

union all保留重复项。