2015-04-20 3 views
0

У меня этот SQL, но он работает нормально.Получить сумму() в разделе WHERE

SELECT  [Customer No_], SUM(Amount) AS SumDebitor, [Posting Date] 
FROM   dbo.[3S Company A_S$Detailed Cust_ Ledg_ Entry] 
WHERE  ([Posting Date] <= CONVERT(DATETIME, '2015-04-10 00:00:00', 102)) 
GROUP BY [Customer No_], [Posting Date] 
HAVING  ([Customer No_] = '45') 

Что я хочу, получает общее количество SUM() всех сообщений до моей даты. Прямо сейчас я получаю более 5000 результатов, сумма ежедневных.

Может ли кто-нибудь помочь мне на правильном пути?

+1

В общем, где положение является для обычных условий, и HAVING условие для aggre функции ворот. – jarlh

ответ

3

вы не должны разместить дату с группировкой (если размещение дате группирование .. вы получите все даты проводки сумму самостоятельно)

и, кроме того того, пункт не требуется .. Ваш запрос должен быть как следующий

SELECT  [Customer No_], SUM(Amount) AS SumDebitor 
FROM   dbo.[3S Company A_S$Detailed Cust_ Ledg_ Entry] 
WHERE  ([Posting Date] <= CONVERT(DATETIME, '2015-04-10 00:00:00', 102)) 
And ([Customer No_] = '45') 
GROUP BY [Customer No_] 

или ниже (если вам нужно рассчитывать для всех клиентов)

SELECT  [Customer No_], SUM(Amount) AS SumDebitor 
FROM   dbo.[3S Company A_S$Detailed Cust_ Ledg_ Entry] 
WHERE  ([Posting Date] <= CONVERT(DATETIME, '2015-04-10 00:00:00', 102)) 
GROUP BY [Customer No_] 
+0

Спасибо! Очень полезно – Kevin