SQL Sum()返回正值和负值

时间:2015-11-06 23:32:37

标签: 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 个答案:

答案 0 :(得分:1)

我认为您需要重新汇总结果:

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

您可以使用子查询而不是CTE执行相同的操作。