2015-11-06 243 views
0

我試圖讓SUM()返回列中總和正值和負值的總和。相反,它目前正在返回一個正值和一個負值,任何人都可以幫忙嗎?SQL Sum()返回正值和負值

SELECT 
    LedgerAP.Period, LedgerAP.Account, SUM(LedgerAP.Amount) Amount 
FROM 
    LedgerAP 
WHERE 
    LedgerAP.Period >= 201500 AND LedgerAP.Account = N'105.71' 
GROUP BY LedgerAP.Period, LedgerAP.Account 
HAVING SUM(Amount) <> 0 

UNION ALL 

SELECT 
    LedgerAR.Period, LedgerAR.Account, SUM(LedgerAR.Amount) 
FROM 
    LedgerAR 
WHERE 
    LedgerAR.Period >= 201500 AND LedgerAR.Account = N'105.71' 
GROUP BY LedgerAR.Period, LedgerAR.Account 

UNION ALL 

SELECT 
    LedgerEx.Period, LedgerEx.Account, SUM(LedgerEx.Amount) 
FROM 
    LedgerEx 
WHERE 
    LedgerEx.Period >= 201500 AND LedgerEx.Account = N'105.71' 
GROUP BY LedgerEx.Period, LedgerEx.Account 

UNION ALL 

SELECT 
    LedgerMisc.Period, LedgerMisc.Account, SUM(LedgerMisc.Amount) 
FROM 
    LedgerMisc 
WHERE 
    LedgerMisc.Period >= 201500 AND LedgerMisc.Account = N'105.71' 
GROUP BY LedgerMisc.Period, LedgerMisc.Account 

RESULT

回答

1

我認爲你需要重新聚集結果:

with l as (
     <your query here> 
    ) 
select period, account, sum(amount) 
from l 
group by period, account; 

你可以做同樣的事情用一個子查詢,而不是一個CTE。