[英]SQL - Sum and Group By returning incorrect sums
所以我有下面的查詢,我認為它應該可以正常工作,但是返回錯誤的值
SELECT
Period,
Sum(Amount) as amount
FROM (
SELECT
Period,
Sum(Amount) Amount
FROM (
SELECT a.Period, a.Account, SUM(a.Amount) amount
FROM LedgerAP a
WHERE a.Period >= @custPeriodStart AND a.Period <= @custPeriodEnd
GROUP BY a.Period, a.Account
UNION
SELECT b.Period, b.Account, SUM(b.Amount) amount
FROM LedgerAR b
WHERE b.Period >= @custPeriodStart AND b.Period <= @custPeriodEnd
GROUP BY b.Period, b.Account
UNION
SELECT c.Period, c.Account, SUM(c.Amount) amount
FROM LedgerEx c
WHERE c.Period >= @custPeriodStart AND c.Period <= @custPeriodEnd
GROUP BY c.Period, c.Account
UNION
SELECT d.Period, d.Account, SUM(d.Amount) amount
FROM LedgerMisc d
WHERE d.Period >= @custPeriodStart AND d.Period <= @custPeriodEnd
GROUP BY d.Period, d.Account
) src1
GROUP BY Period, Account
) src2
Group by Period
我得到的是:
Period | Amount
201501 | -450.00
201502 | 00
201503 | 00
... | ...
201512 | xxxxxx
我期望的是:
Period | Amount
201501 | 1731262
201502 | 774221
201503 | 770845
... | ...
201512 | xxxxxx
換句話說,SUM()沒有返回正確的值。 我知道我的子查詢正確返回了我要查找的值,但是當我進行GROUP和SUM時,這些值變得非常不正確。 我正在處理正數和負數,但是我的理解是SUM()應該仍然可以正常工作。 有任何想法嗎?
在您的內部SQL中,有一個“按期間划分的GROUP”,但您不是按“期間+帳戶”進行匯總,而僅按“期間”進行匯總。 請嘗試刪除GROUP BY中的帳戶
SELECT
Period,
Sum(amount1) Amount
FROM (
SELECT a.Period, a.Account, SUM(a.Amount) amount1
FROM LedgerAP a
WHERE a.Period >= @custPeriodStart AND a.Period <= @custPeriodEnd
GROUP BY a.Period, a.Account
UNION
SELECT b.Period, b.Account, SUM(b.Amount) amount1
FROM LedgerAR b
WHERE b.Period >= @custPeriodStart AND b.Period <= @custPeriodEnd
GROUP BY b.Period, b.Account
UNION
SELECT c.Period, c.Account, SUM(c.Amount) amount1
FROM LedgerEx c
WHERE c.Period >= @custPeriodStart AND c.Period <= @custPeriodEnd
GROUP BY c.Period, c.Account
UNION
SELECT d.Period, d.Account, SUM(d.Amount) amount1
FROM LedgerMisc d
WHERE d.Period >= @custPeriodStart AND d.Period <= @custPeriodEnd
GROUP BY d.Period, d.Account
) src1
GROUP BY Period
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.