Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года

Ainur.sm
Дата: 10.02.2016 14:10:15
за 2014
Center -----январь---Февраль--Итого
Машина------200------400--------400
за 2015 должен + итог 2014 год
Center -----январь---------Февраль-----------------------------Итого
Машина------400+200------400+200+400=1000
ВЫШЛА ОШИБКА!!!! КАК решить проблему??
SELECT Center, -SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 1)) + Итого AS Январь, 
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 2)) + Январь AS Февраль,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 3))+ Февраль AS Март,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 4))+ Март AS Апрель,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 5))+ Апрель AS Май,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 6))+ Май AS Июнь,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 7))+ Июнь AS Июль,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 8))+ Июль AS Август,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 9))+ Август AS Сентябрь,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 10))+ Сентябрь AS Октябрь,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 11))+ Октябрь AS Ноябрь, 
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 12))+ Ноябрь AS Декабрь, Декабрь AS Итого
FROM qdfPayments WHERE Year(PaymentDate) <=2015  AND Center<>''  
GROUP BY Center
ПЕНСИОНЕРКА
Дата: 10.02.2016 15:23:50
Ainur.sm,
нельзя повторять имя
SELECT Center,
 -SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 1)) + Итого AS Январь_1, 
ПЕНСИОНЕРКА
Дата: 10.02.2016 15:25:34
Ainur.sm,

SELECT Center, -SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 1)) + Итого AS Январь1, 
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 2)) + Январь1 AS Февраль1,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 3))+ Февраль1 AS Март1,
-SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 4))+ Март1 AS Апрель1,
Ainur.sm
Дата: 10.02.2016 15:34:07
ПЕНСИОНЕРКА,
В чем ошибка?
Анатолий ( Киев )
Дата: 10.02.2016 16:01:08
В выражениях запроса можно использовать имена вычисляемых полей, расположенных левее, а у вас в поле "Январь" используется "Итого", расположенное гораздо правее, потому и ошибка.
К тому же, с чего вы взяли, что ваше "Итого" (оно же "Декабрь") будет за 2014 г.? Как по мне, при WHERE Year(PaymentDate) <=2015 во всех ваших выражениях будут суммироваться все значения соответствующего месяца за все годы.
Может вам нужно так?:
...
-SUM(qdfPayments.IncomePaymentSumCalc * (PaymentDate <= #2015/01/01#)) AS Январь, 
-SUM(qdfPayments.IncomePaymentSumCalc * (PaymentDate <= #2015/02/01#)) AS Февраль,
...

Кстати, если поле PaymentDate индексировано и записей много, то вместо:
WHERE Year(PaymentDate) <=2015
лучше применить (быстрее работает):
WHERE PaymentDate <= #2015/12/31#
Ainur.sm
Дата: 10.02.2016 16:07:37
Анатолий ( Киев ),

нет..... год потом в фильтре вводятся.
для примера я взяла 2015 год


SELECT Center, SUM(qdfPayments.IncomePaymentSumCalc)  FROM qdfPayments
 WHERE Year(PaymentDate)<=2015 AND Center<>''  
GROUP BY Center

нахождение итого
мне надо + Январь

Select Center, (SUM(qdfPayments.IncomePaymentSumCalc *( -(Month(PaymentDate) = 1))) + (SELECT Center, SUM(qdfPayments.IncomePaymentSumCalc)  FROM qdfPayments
 WHERE Year(PaymentDate)<=2015 AND Center<>''  
GROUP BY Center) ) AS Январь   FROM qdfPayments WHERE  Year(PaymentDate) <= 2015 AND Center<>'' 
GROUP BY Center
Анатолий ( Киев )
Дата: 10.02.2016 17:42:07
Вообще-то этот вопрос и пример из другой вашей ветки...
Подчиненный запрос, используемый в разделе перечисления полей (между SELECT и FROM) должен возвращать только одно поле и только одну запись. У вас же два поля и несколько записей. Потому и ошибка.
Вам нужно включить подзапрос в раздел FROM в качестве второго источника и связать его по Center с qdfPayments.
Кстати, вы уверены, что в подзапросе условие <=2015 правильное? Может нужно <2015?

В моем предыдущем ответе сумма по каждому месяцу учитывается с накоплением за весь предыдущий период по этот месяц включительно. Вроде то, что вам нужно. И подзапрос не нужен.
Ainur.sm
Дата: 10.02.2016 20:29:56
Анатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.
непоймучка
Дата: 10.02.2016 22:45:10
Ainur.sm
Анатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.

так можно
SELECT Center, 
-SUM(S*(NOT Y)) AS Итог_2014,
 SUM(S*(M=1)*Y)+Итог_2014 AS Январь,
 SUM(S*(M=2)*Y)+Январь AS Февраль, 
 SUM(S*(M=3)*Y)+Февраль AS Март, 
 SUM(S*(M=4)*Y)+Март AS Апрель, 
 SUM(S*(M=5)*Y)+Апрель AS Май, 
 SUM(S*(M=6)*Y)+Май AS Июнь, 
 SUM(S*(M=7)*Y)+Июнь AS Июль, 
 SUM(S*(M=8)*Y)+Июль AS Август, 
 SUM(S*(M=9)*Y)+Август AS Сентябрь, 
 SUM(S*(M=10)*Y)+Сентябрь AS Октябрь, 
 SUM(S*(M=11)*Y)+Октябрь AS Ноябрь, 
 SUM(S*(M=12)*Y)+Ноябрь AS Декабрь
 
FROM
(SELECT Center, IncomePaymentSumCalc AS S, Month(PaymentDate) AS M, Year(PaymentDate)=2015 AS Y
 FROM qdfPayments WHERE Year(PaymentDate)<=2015 And Center IS NOT NULL)
 
GROUP BY Center
Ainur.sm
Дата: 11.02.2016 10:29:41
непоймучка,
Спасибо! Только вопрос после компиляции выводит это [%$##@_A]
почему ? можно ли заменить это?
SELECT Center, -SUM(S * (NOT Y)) AS Итог_2014, SUM(S * (M=1) * Y) + Итог_2014 AS Январь, 
SUM(S * (M=2) * Y) + Январь AS Февраль, SUM(S * (M=3) * Y) + Февраль AS Март, 
SUM(S * (M=4) * Y) + Март AS Апрель, SUM(S * (M=5) * Y) + Апрель AS Май, 
SUM(S * (M=6) * Y) + Май AS Июнь, SUM(S * (M=7) * Y) + Июнь AS Июль, 
SUM(S * (M=8) * Y) + Июль AS Август, SUM(S * (M=9) * Y) + Август AS Сентябрь, 
SUM(S * (M=10) * Y) + Сентябрь AS Октябрь, SUM(S * (M=11) * Y) + Октябрь AS Ноябрь, 
SUM(S * (M=12) * Y) + Ноябрь AS Декабрь
FROM [SELECT Center, IncomePaymentSumCalc AS S, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And Center IS NOT NULL]. AS[color=red] [%$##@_A][/color]
GROUP BY Center;