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