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) - 转载

MySQL使用union导致数据丢失的解决办法

sql union和union all

SQL Server-聚焦UNIOL ALL/UNION查询

SQL Server 2008 查找丢失的行 [重复]

SQL Server 中的复合 SUM [重复]