2014-01-16 50 views
1

我正在嘗試查找運行總和。當我運行這個時,我每次在兩週內進行購買(而不是總額)。我試圖回答的問題是,每個帳戶在頭兩週內花費多少錢。在SQL中查找運行總和(Access 07-10)

SELECT 
    dbo_AAS.Account, 
    dbo_AM.ED, 
    ([dbo_AM].[ED]+14) AS TwoWeeks, 
    dbo_AAS.RD, 
    Sum(Abs([dbo_AAS].[WA])) AS ABSWA  
FROM dbo_AAS 
INNER JOIN dbo_AM 
    ON dbo_AAS.Account = dbo_AM.Account 
GROUP BY 
    dbo_AAS.Account, 
    dbo_AM.ED, 
    dbo_AAS.RD 
HAVING ((
    (dbo_AM.ED) Is Not Null) 
    AND ((dbo_AAS.RD) Between [dbo_AM].[ED] And [dbo_AM].[ED]+14)); 

結果:

+-------+----------+----------+----------+-----+ 
|Account|ED  |TwoWeeks |RD  |ABSWA| 
+-------+----------+----------+----------+-----+ 
|34  |11/23/2013|12/07/2013|11/23/2013|18 | 
+-------+----------+----------+----------+-----+ 
|34  |11/23/2013|12/07/2013|11/27/2013|30 | 
+-------+----------+----------+----------+-----+ 
|34  |11/23/2013|12/07/2013|12/02/2013|15 | 
+-------+----------+----------+----------+-----+ 
|34  |11/23/2013|12/07/2013|12/05/2013|20 | 
+-------+----------+----------+----------+-----+ 

預期的效果

+-------+----------+----------+--+-----+ 
|Account|ED  |TwoWeeks |RD|ABSWA| 
+-------+----------+----------+--+-----+ 
|34  |11/23/2013|12/07/2013|* |83 | 
+-------+----------+----------+--+-----+ 
+0

謝謝你糾正 – ColorfulWind

回答

1

你通過RD分組,所以這是要給你一個線對RD的每個值。從GROUP BY語句中取出該字段,您應該得到答案。您還必須將其從SELECT語句中刪除,否則它會向您發出錯誤。

+0

當我從GROUP BY中刪除RD時,我得到錯誤「你試圖執行一個不包含指定表達式'RD'的查詢作爲聚合函數的一部分 – ColorfulWind

+0

這就是爲什麼我說將其從SELECT語句中刪除 –

+0

當刪除RD時,結果(ABSWA)不限於兩週的時間限制:( – ColorfulWind

1
SELECT dbo_AAS.Account, 
     dbo_AM.ED, 
     ([dbo_AM].[ED]+14) AS TwoWeeks, 
     Sum(Abs([dbo_AAS].[WA])) AS ABSWA 
FROM dbo_AAS 
INNER JOIN dbo_AM 
    ON dbo_AAS.Account = dbo_AM.Account 
WHERE dbo_AAS.RD BETWEEN '11/23/2013' AND '12/05/2013' 
GROUP BY dbo_AAS.Account, dbo_AM.ED 
HAVING (((dbo_AM.ED) Is Not Null) AND 
     ((dbo_AAS.RD) Between [dbo_AM].[ED] And [dbo_AM].[ED]+14)); 

完全刪除RD。

+0

當刪除RD時,結果(ABSWA)不限於兩週的時間限制: ( – ColorfulWind

+0

@ user3120577只需將您的WHERE條件添加您所需的日期即可。 – Mihai

1

子查詢完成了這個技巧。謝謝你的幫助。 SELECT [%$ ## @ _ Alias] .account,dbo_AM.FN,dbo_AM.LN,Sum([%$ ## @ _ Alias] .abswa)AS WA,dbo_AM.ED,([dbo_am]。[ ED] 14)AS TwoWeeks FROM(SELECT dbo_AAS.Account,dbo_AM.ED,dbo_AAS.RD,SUM((ABS([dbo_AAS] [WS])))AS ABSWA

FROM dbo_AAS INNER JOIN dbo_AM ON dbo_AAS.Account = dbo_AM.Account

GROUP BY dbo_AAS.Account,dbo_AM.ED,dbo_AAS.RD

HAVING(((dbo_AAS.RD)之間[dbo_AM] [ED]和[dbo_AM]。[ ED] +14)) )AS [%$ ## @ _ Alias] INNER JOIN dbo_AM ON [%$ ## @ _ Alia s]。帳戶= dbo_AM.Account GROUP BY [%$ ## @ _ Alias] .account,dbo_AM.FN,dbo_AM.LN,dbo_AM.ED,([dbo_am]。[ED] +14);