2015-11-06 177 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。