2014-01-16 4 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

Вы группирование по РД, так что собирается дать вам одну строку для каждого значения в РД. Возьмите это поле из инструкции GROUP BY, и вы должны получить ответ. Вы также должны будете вынуть его из инструкции SELECT, иначе он выдаст вам ошибку.

+0

Когда я удаляю RD из GROUP BY, я получаю сообщение об ошибке «Вы пытались выполнить запрос, который не включает указанное выражение« 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 Просто добавьте условие в свое ГДЕ с датами, которые вам нужны. – Mihai

1

Подпрограмма сделала трюк. спасибо за помощь своим парням.

SELECT [% $ ## @ _ Alias] .account, dbo_AM.FN, dbo_AM.LN, Sum ([% $ ## @ _ Alias] .abswa) AS WA, dbo_AM.ED, ([dbo_am]. [ ЭД] +14) КАК TwoWeeks ОТ (SELECT dbo_AAS.Account, dbo_AM.ED, dbo_AAS.RD, Sum ((Abs ([dbo_AAS]. [WS]))) КАК ABSWA

ОТ dbo_AAS INNER JOIN ON dbo_AM 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 [% $ ## @ _ Псевдоним] INNER JOIN dbo_AM ON [% $ ## @ _ Alia s] .Account = dbo_AM.Account GROUP BY [% $ ## @ _ Alias] .account, dbo_AM.FN, dbo_AM.LN, dbo_AM.ED, ([dbo_am]. [ED] +14);