SQL Server UNION SUM 丢失重复值 [重复]
Posted
技术标签:
【中文标题】SQL Server UNION SUM 丢失重复值 [重复]【英文标题】:SQL Server UNION SUM misses repeated values [duplicate] 【发布时间】:2015-11-10 09:10:11 【问题描述】:我有 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
我发现当一个值被重复而不是 sum 时,它会使用重复的值之一,例如第 3 天的值都为 5。指令只会给出值 5 而不是 10。
这应该给我一个一个月内每天的总价值的报告,但报告是错误的,因为这个问题是由 UNION 引起的 我该如何解决?
【问题讨论】:
检查UNION
(删除重复项)和UNION ALL
(不删除重复项)之间的区别
谢谢。我不知道那是一个 UNION ALL
这似乎是一个重复的问题,也许我只是不知道如何找到答案。现在我该怎么办?
Marcos,如果您觉得问题已经得到充分解决,则无需做任何事情!阅读this 了解更多关于 *** 认为是重复的信息,以及我们为什么按照我们的方式标记它。
【参考方案1】:
union
删除重复项,正如您所注意到的。相反,你应该使用union all
:
SELECT day, SUM(val)
FROM query1 UNION ALL query2
GOURP BY day
【讨论】:
谢谢老哥,解决了。【参考方案2】:你应该这样做
select day, sum(val)
from (
select day,val from table1
union all
select day,val from table2) t
group by day;
union all
保留重复项。
【讨论】:
谢谢大佬,解决了以上是关于SQL Server UNION SUM 丢失重复值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQL SERVER: 合并相关操作(Union,Except,Intersect) - 转载