IMA*_*bev 1 sql-server union sum
我有一个包含 4 个子查询的联合查询。例如:
(Select Sum(x.result)
FROM
(
<query 1>
UNION
<query 2>
UNION
select IsNull(Sum(A.TransAmount) + Sum(Case When A.BetResult = 1 Then (A.BetWinAmount + (A.TransAmount * -1)) End), 0) As Result
from <join omitted>
where <where omitted>
) As X
Run Code Online (Sandbox Code Playgroud)
问题出在“Sum”的联盟上。我想要做的是当 betresult = 1 时对 a.transamount 进行求和并对其他列进行求和(计算)。当我运行查询时,计算不正确。
当我将这个 Union 从语句中取出并单独运行它时,它会返回正确的值。在联盟内部,它不计算两者的总和。
UNION 是否忽略其中一个语句中的这种类型的多重求和,或者我还有其他错误吗?
默认情况下,UNION 关键字使用 DISTINCT 修饰符。由于SUM 还支持 DISTINCT,我猜测发生的情况是您只是对查询中的不同值求和。尝试使用 UNION ALL 而不是 UNION 并查看 SUM 结果是否正确。