2011-02-27 107 views
0

我有一個聯盟查詢與4 subquerys。例如:SQL聯合查詢不正確加總

(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 

問題出在與「總和」的聯盟。我在那裏做的是總和a.transamount和其他列(計算)betresult = 1時總結。當我運行查詢計算不正確。

當我將該聯合從語句中拉出並單獨運行時,它會返回正確的值。在聯盟內部它不計算兩個和。

UNION是否忽略了其中一個語句中的這種類型的多重總和還是我有其他錯誤?

+3

你可以發佈整個查詢嗎?一個可能的錯誤是'union'消除重複,而'union all'不會 – Andomar 2011-02-27 14:36:23

回答

0

嘗試使用CTE,然後從該表中選擇SUM。這可能使它考慮單個表格採取適當的總和。

;WITH SUMTab as 
(
<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> 
) 
SELECT SUM(result) from SUMTab 
....