powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
41 сообщений из 41, показаны все 2 страниц
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167606
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
за 2014
Center -----январь---Февраль--Итого
Машина------200------400--------400
за 2015 должен + итог 2014 год
Center -----январь---------Февраль-----------------------------Итого
Машина------400+200------400+200+400=1000
ВЫШЛА ОШИБКА!!!! КАК решить проблему??
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167688
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,
нельзя повторять имя
Код: sql
1.
2.
SELECT Center,
 -SUM(qdfPayments.IncomePaymentSumCalc * (Month(PaymentDate) = 1)) + Итого AS Январь_1, 
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167692
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

Код: sql
1.
2.
3.
4.
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,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167709
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
В чем ошибка?
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167740
В выражениях запроса можно использовать имена вычисляемых полей, расположенных левее, а у вас в поле "Январь" используется "Итого", расположенное гораздо правее, потому и ошибка.
К тому же, с чего вы взяли, что ваше "Итого" (оно же "Декабрь") будет за 2014 г.? Как по мне, при WHERE Year(PaymentDate) <=2015 во всех ваших выражениях будут суммироваться все значения соответствующего месяца за все годы.
Может вам нужно так?:
Код: plsql
1.
2.
3.
4.
...
-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#
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167749
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

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


Код: sql
1.
2.
3.
SELECT Center, SUM(qdfPayments.IncomePaymentSumCalc)  FROM qdfPayments
 WHERE Year(PaymentDate)<=2015 AND Center<>''  
GROUP BY Center


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

Код: sql
1.
2.
3.
4.
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
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39167882
Вообще-то этот вопрос и пример из другой вашей ветки...
Подчиненный запрос, используемый в разделе перечисления полей (между SELECT и FROM) должен возвращать только одно поле и только одну запись. У вас же два поля и несколько записей. Потому и ошибка.
Вам нужно включить подзапрос в раздел FROM в качестве второго источника и связать его по Center с qdfPayments.
Кстати, вы уверены, что в подзапросе условие <=2015 правильное? Может нужно <2015?

В моем предыдущем ответе сумма по каждому месяцу учитывается с накоплением за весь предыдущий период по этот месяц включительно. Вроде то, что вам нужно. И подзапрос не нужен.
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168035
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168090
Ainur.smАнатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.

так можно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168300
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Спасибо! Только вопрос после компиляции выводит это [%$##@_A]
почему ? можно ли заменить это?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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;
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168363
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Надо сделать тоже самое только здесь присутствует ("-" и "+") И условия
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
UNION ALL
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate) = 1 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=1 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=1 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=1 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) AS Январь,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=2 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=2 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=2 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=2 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Январь AS Февраль,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=3 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=3 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=3 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=3 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Февраль AS Март,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=4 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=4 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=4 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=4 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Март AS Апрель,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=5 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=5 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=5 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=5 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Апрель AS Май,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=6 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=6 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=6 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=6 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Май AS Июнь,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=7 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=7 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=7 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=7 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Июнь AS Июль,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=8 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=8 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=8 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=8 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Июль AS Август,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=9 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=9 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=9 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=9 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Август AS Сентябрь,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=10 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=10 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=10 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=10 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Сентябрь AS Октябрь,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=11 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=11 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=11 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=11 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Октябрь AS Ноябрь,
-SUM(qdfPayments.IncomeAmount * (Month(PaymentDate)=12 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления'))
+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=12 AND qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=12 AND qdfPayments.TransactionType = 'Расходы прочие'))+SUM(qdfPayments.PaymentAmount * (Month(PaymentDate)=12 AND qdfPayments.TransactionType = 'Прибыль, дивиденды')) + Ноябрь AS Декабрь, Декабрь AS Итого
FROM qdfPayments
WHERE qdfPayments.PaymentDate <= <FILTER1> 


попробовала сделать итог 2014 года и январь 2015

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
  SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
  -SUM(S2  * Y AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P  * Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * Y AND T = 'Расходы прочие')+SUM(P * Y AND CL = 'Прибыль, дивиденды')
-SUM(S2 * (NOT Y)) AS Итог_2014, 
 SUM(S2 * (M=1) * Y AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=1 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=1 * Y AND T = 'Расходы прочие')+SUM(P * (M)=1* Y  AND CL = 'Прибыль, дивиденды') AS Январь
FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And Center IS NOT NULL]. AS [% $ # # @_A] 
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168409
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результаты 0,0,0.
В чем проблема??
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
  -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления'))
  	+SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке'))  +SUM(P * (NOT Y) AND (T = 'Расходы прочие'))+SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS Итог_2014, 
 SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') AS Январь,

SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') + Январь As Февраль

FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL]. AS [% $ # # @_A]

Ainur.sm,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168546
Ainur.smнепоймучка,
Спасибо! Только вопрос после компиляции выводит это [%$##@_A]
почему ? можно ли заменить это? нельзя, так работает построитель запросов,
он вообще не особо стремится сохранить авторский формат SQL-текста.

вообще перед публикацией на форуме лучше позаботиться и форматировать тексты вручную,
иначе для особо длинных запросов сложно читать "стену текста"
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168601
во-первых:

Ainur.sm попробовала сделать итог 2014 года и январь 2015
Код: plsql
1.
2.
3.
4.
5.
6.
...
FROM 
[SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, 
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And Center IS NOT NULL]. AS [% $ # # @_A] 
...


теперь смотрим, что я выше написал (для того же самого периода) - и сравниваем
непоймучкаAinur.smмне нужно чтоб Итог до 2015 года +январь за 2015 года так можно
Код: sql
1.
2.
3.
4.
5.
...
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)
...

обратите на выделенные с запросах значения ГОДА и ответьте себе:

с какого перепугу ваш запрос будет что-то делать на "январь 2015",
если в вашем варианте условие (<=2014) вообще исключает записи 2015 года?

ваш запрос (в лучшем случае - т.е. если бы там не было иных ошибок и он сработал)
посчитал бы вам итог 2013 года и январь 2014
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168621
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Спасибо. я разобралась. Теперь мне надо рассчитать "Нераспределенная прибыль" где присутствует условия.....

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Результаты -1,0,0. 
В чем проблема??
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
  -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления'))
  	+SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке'))  +SUM(P * (NOT Y) AND (T = 'Расходы прочие'))+SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS Итог_2014, 
 SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') AS Январь,

SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') + Январь As Февраль

FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL]. AS [% $ # # @_A]
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168675
Ainur.smнепоймучка,
Спасибо. я разобралась. Теперь мне надо рассчитать "Нераспределенная прибыль" где присутствует условия.....

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Результаты -1,0,0. 
В чем проблема??
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
  -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления'))
  	+SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке'))  +SUM(P * (NOT Y) AND (T = 'Расходы прочие'))+SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS Итог_2014, 
 SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') AS Январь,

SUM(S2 * ((M=2) * Y) AND CL = 'Закрыт' AND  T= 'Поступления')
+SUM(P * (M=2 )* Y AND CL = 'Закрыт' AND T = 'Затраты по заявке')+SUM(P * (M)=2 * Y AND T = 'Расходы прочие')+SUM(P * (M)=2* Y  AND CL = 'Прибыль, дивиденды') + Январь As Февраль

FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL]. AS [% $ # # @_A]


чтобы понять проблему, вам надо ЯСНО понимать, что вы тут написали
у вас тут где-то -SUM, а где-то +SUM - вы понимаете, почему именно так?
вы ясно понимаете, КАК работают написанные там выражения?

если нет, то чтобы понять из чего "сложился" ваш 0
исследуйте для начала в запросе сумму, из которой складывается этот столбец:
Код: vbnet
1.
2.
3.
4.
5.
6.
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
-SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления'))
+SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке'))
+SUM(P * (NOT Y) AND (T = 'Расходы прочие'))
+SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS Итог_2014,
...


напишите это в виде отдельных слагаемых столбцов:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
-SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1,
+SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке')) AS F2,
+SUM(P * (NOT Y) AND (T = 'Расходы прочие')) AS F3,
+SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS F4,
F1+F2+F3+F4 AS Итог_2014, 
...


и посмотрите результат, который дает вам каждое слагаемое вашего выражения -
возможно, что-то прояснится
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168709
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,вышли 0 0 0

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
-SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1,
-SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке')) AS F2,
-SUM(P * (NOT Y) AND (T = 'Расходы прочие')) AS F3,
-SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS F4,
F1-F2-F3-F4 AS Итог_2014,
FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL]. AS [% $ # # @_A]
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168801
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

может надо

Код: sql
1.
-SUM(iif(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления'),0) AS F1,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168811
Ainur.smнепоймучка,вышли 0 0 0

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 SELECT 'Нераспределенная прибыль' AS ПАССИВ, 
-SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1,
-SUM(P  * (NOT Y) AND (CL = 'Закрыт' AND T = 'Затраты по заявке')) AS F2,
-SUM(P * (NOT Y) AND (T = 'Расходы прочие')) AS F3,
-SUM(P * (NOT Y) AND (CL = 'Прибыль, дивиденды')) AS F4,
F1-F2-F3-F4 AS Итог_2014,
FROM [SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y, ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL]. AS [% $ # # @_A]

ну тогда одно из двух:

1) либо у вас нет записей, удовлетоворяющих указанным критериям в WHERE
2) либо записи есть, но все суммируемые значения (которые дает выражение внутри SUM)
получаются нулевыми (например, из-за того что логический критерий-множитель нулевой)

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

Для того чтобы понять почему "вышли 0 0 0", предлагаю вам еще более углубиться в суть вашего
вашего выражения и рассмотреть - чему равны значения отдельных частей суммируемого значения,
например для первой формулы (F1)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT
 "S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')" AS Формула,
 S2,
 (NOT Y) AS NOT_Y,
 (CL = 'Закрыт') AS CL_Закрыт,
 (T= 'Поступления') AS T_Поступления,
 S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления') AS Суммируемое_значение
FROM
(SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y,
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL)


посмотрите на результат, возможно, что-то прояснится
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168888
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168924
Ainur.sm,

ну вот, ваша картинка демонстрирует причину вашего нуля в сумме - как и было сказано чуть выше:
непоймучкалибо записи есть, но все суммируемые значения (которые дает выражение внутри SUM)
получаются нулевыми (например, из-за того что логический критерий-множитель нулевой )А именно: множитель (NOT Y), который во всех записях у вас равен нулю, в итоге и обнуляет всю сумму.
Понятна причина?

Если по-прежнему нет, то идем дальше вглубь смысла вашей формулы.
Что же означает этот множитель (NOT Y), который вы использовали например вот в этой формуле вашего запроса:
Код: sql
1.
2.
3.
4.
5.
SELECT -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1 
FROM 
(SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y,
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL)


Можете пояснить, какой логический смысл имеют значения этого (NOT Y)?
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168932
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.sm,

ну вот, ваша картинка демонстрирует причину вашего нуля в сумме - как и было сказано чуть выше:
непоймучкалибо записи есть, но все суммируемые значения (которые дает выражение внутри SUM)
получаются нулевыми (например, из-за того что логический критерий-множитель нулевой )А именно: множитель (NOT Y), который во всех записях у вас равен нулю, в итоге и обнуляет всю сумму.
Понятна причина?

Если по-прежнему нет, то идем дальше вглубь смысла вашей формулы.
Что же означает этот множитель (NOT Y), который вы использовали например вот в этой формуле вашего запроса:
Код: sql
1.
2.
3.
4.
5.
SELECT -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1 
FROM 
(SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y,
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL)


Можете пояснить, какой логический смысл имеют значения этого (NOT Y)?


>>>Year(PaymentDate)=2014 AS Y<<< здесь расчет за январь месяц 2014 года
>>>Year(PaymentDate)<2014<<< Итог до 2014 год
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168933
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ainur.smнепоймучкаAinur.sm,

ну вот, ваша картинка демонстрирует причину вашего нуля в сумме - как и было сказано чуть выше:
пропущено...
А именно: множитель (NOT Y), который во всех записях у вас равен нулю, в итоге и обнуляет всю сумму.
Понятна причина?

Если по-прежнему нет, то идем дальше вглубь смысла вашей формулы.
Что же означает этот множитель (NOT Y), который вы использовали например вот в этой формуле вашего запроса:
Код: sql
1.
2.
3.
4.
5.
SELECT -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1 
FROM 
(SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y,
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL)


Можете пояснить, какой логический смысл имеют значения этого (NOT Y)?


>>>Year(PaymentDate)=2014 AS Y<<< здесь расчет за январь месяц 2014 года
>>>Year(PaymentDate)<2014<<< Итог до 2014 год

(NOT Y) если отчет нужен за 2013 а общий итог до 2013 год нет вообще то он возвращает -SUM(S2 * >>> (-1)<<< And (CL = 'Закрыт' AND T= 'Поступления')) AS F1
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168952
Ainur.smнепоймучкаAinur.sm,

ну вот, ваша картинка демонстрирует причину вашего нуля в сумме - как и было сказано чуть выше:
пропущено...
А именно: множитель (NOT Y), который во всех записях у вас равен нулю, в итоге и обнуляет всю сумму.
Понятна причина?

Если по-прежнему нет, то идем дальше вглубь смысла вашей формулы.
Что же означает этот множитель (NOT Y), который вы использовали например вот в этой формуле вашего запроса:
Код: sql
1.
2.
3.
4.
5.
SELECT -SUM(S2 * (NOT Y) And (CL = 'Закрыт' AND  T= 'Поступления')) AS F1 
FROM 
(SELECT IncomeAmount AS S2, Month(PaymentDate) AS M, Year(PaymentDate)=2014 AS Y,
 ManagerPayCalc AS  CL, TransactionType AS T, PaymentAmount AS P
 FROM qdfPayments WHERE Year(PaymentDate)<=2014 And  Center IS NOT NULL)


Можете пояснить, какой логический смысл имеют значения этого (NOT Y)?


>>>Year(PaymentDate)=2014 AS Y<<< здесь расчет за январь месяц 2014 года
>>>Year(PaymentDate)<2014<<< Итог до 2014 год

Y - это ЛОГИЧЕСКОЕ ПОЛЕ в подзапросе, вычисляемое выражением Year(PaymentDate)=2014 AS Y
логический смысл которого: "Это запись 2014 года"
т.е. для записей 2014 года Y=-1,
а для записей НЕ 2014 года Y=0

соответственно, логический смысл (инверсного) выражения (NOT Y): "Это запись НЕ 2014 года"
а учитывая общий критерий отбора в запросе WHERE Year(PaymentDate)<=2014
в данном случае (NOT Y) означает: "Это запись РАНЕЕ 2014 года"

таким образом, в приведенном выше запросе
Код: vbnet
1.
2.
3.
4.
'выражения вида
SUM(S2*(NOT Y)...) 'суммируют данные РАНЕЕ 2014 года
'а выражения вида
SUM(S2*(Y)...) 'суммируют данные ЗА 2014 год


а поскольку на последнем вашем скрине ясно видно, что у всех записей NOT_Y = 0
это означает, что у вас в исходной таблице НЕТ записей ранее 2014

отсюда и ваши итоговые нули в столбцах сумм на конец 2013
все вполне законно
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39168955
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

я бы написала так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT 'Нераспределенная прибыль' AS ПАССИВ,
 -Sum(IIf(CL='Закрыт' And T='Поступления',s2*y,0)) AS F1,
 -Sum(IIf(CL='Закрыт' And T='Затраты по заявке',p*y,0)) AS F2,
 -Sum(IIf(T='Расходы прочие',p*y,0)) AS F3,
 -Sum(IIf(CL='Прибыль, дивиденды',p*y,0)) AS F4,
 F1-F2-F3-F4 AS Итог_2015
FROM (SELECT nz(IncomeAmount,0) AS S2,
 Month(PaymentDate) AS M, Year(PaymentDate)=2015 AS Y,
 "" & ManagerPayCalc AS CL, "" & TransactionType AS T,
 nz(PaymentAmount,0) AS P
 FROM qdfPayments
 WHERE Year(PaymentDate)<=2015 And  Center IS NOT NULL)  AS w
GROUP BY 'Нераспределенная прибыль';
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169015
не знаю, по-моему, вполне сгодится прямо вот этот запрос
просто в подзапросе там написать новое выражение для поля суммирования (S), да и вся недолга
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169026
что-то вроде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT 'Нераспределенная прибыль' AS ПАССИВ,
-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, 
 -IncomeAmount  * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Поступления')
 +PaymentAmount * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Затраты по заявке')
 +PaymentAmount * (TransactionType = 'Расходы прочие')
 +PaymentAmount * (ManagerPayCalc = 'Прибыль, дивиденды') AS S,
 Month(PaymentDate) AS M,
 Year(PaymentDate)=2015 AS Y
FROM
 qdfPayments
WHERE Year(PaymentDate)<=2015 And Center IS NOT NULL)
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169089
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкачто-то вроде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT 'Нераспределенная прибыль' AS ПАССИВ,
-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, 
 -IncomeAmount  * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Поступления')
 +PaymentAmount * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Затраты по заявке')
 +PaymentAmount * (TransactionType = 'Расходы прочие')
 +PaymentAmount * (ManagerPayCalc = 'Прибыль, дивиденды') AS S,
 Month(PaymentDate) AS M,
 Year(PaymentDate)=2015 AS Y
FROM
 qdfPayments
WHERE Year(PaymentDate)<=2015 And Center IS NOT NULL)




Не правильно считает с июня месяца должно быть 100 000
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT 'Нераспределенная прибыль' AS ПАССИВ,
-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, 
 -IncomeAmount  * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Поступления')
 +PaymentAmount * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Затраты по заявке')
 +PaymentAmount * (TransactionType = 'Расходы прочие')
 +PaymentAmount * (ManagerPayCalc = 'Прибыль, дивиденды') AS S,
 Month(PaymentDate) AS M,
 Year(PaymentDate)=2014 AS Y
FROM
 qdfPayments
WHERE Year(PaymentDate)<=2014 And Center IS NOT NULL)
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169163
Ainur.smнепоймучкачто-то вроде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT 'Нераспределенная прибыль' AS ПАССИВ,
-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, 
 -IncomeAmount  * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Поступления')
 +PaymentAmount * (ManagerPayCalc = 'Закрыт' AND TransactionType = 'Затраты по заявке')
 +PaymentAmount * (TransactionType = 'Расходы прочие')
 +PaymentAmount * (ManagerPayCalc = 'Прибыль, дивиденды') AS S,
 Month(PaymentDate) AS M,
 Year(PaymentDate)=2015 AS Y
FROM
 qdfPayments
WHERE Year(PaymentDate)<=2015 And Center IS NOT NULL)



Не правильно считает с июня месяца должно быть 100 000
Ну так это зависит:

1) от того, какие у вас данные (а я их не знаю)
2) и от того, насколько правильно написана красная формула

Моей целью было предложить вам структурный SQL-вариант решения вашей задачи
и указать в нем место, КУДА надо написать вашу (правильную) формулу,

Насколько я увидел из вашего исходного запроса , эта формула одинакова для всех месяцев и пред.итога,
поэтому ее можно вынести прямо в подзапрос (чтоб не писать 13 раз) - что я сделал в запросе выше

При этом я взял формулу в том виде, как вы ее написали в вашем исходном посте,
и я НЕ знаю, насколько эта формула соответствует истинному смыслу ваших расчетов,
(ибо вы о нем не рассказывали, а просто написали некую формулу как данность.)

Так что ошибку вам придется искать самостоятельно.

Смотрите по аналогии с тем, как ранее (на первой странице) делали,
разбивая формулы на части и выводя их исходные составляюще значения в отдельные столбцы -
тогда можно видеть, как именно происходит счет и скорее понять что идет не так и как это подправить.

Успехов.
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169174
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

Так что ошибку вам придется искать самостоятельно.
так как отладочной базы, на которой вы проверяете методику расчета вы так и не выложили ни в одной из ваших 5-6-7.....тем

поэтому и я и непоймучка и вы работаем в разных базах
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169279
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка, А что если. Создать 2 таблицы. В одном предыдущего итог + январь след года. А во втором месяца год=год
и в 3 таблице взять с перового таблица предыдущего итог + январь след года прибавить ко Февралю потом Февраль на Март.. Только как сделать 3 таблицу?
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169302
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,за январь месяц считает правильно. А в других не считает
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169686
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
А как сделать чтобы выводил и нулевые значение всех полей?
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39169991
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smпропущено...


Не правильно считает с июня месяца должно быть 100 000
Ну так это зависит:

1) от того, какие у вас данные (а я их не знаю)
2) и от того, насколько правильно написана красная формула

Моей целью было предложить вам структурный SQL-вариант решения вашей задачи
и указать в нем место, КУДА надо написать вашу (правильную) формулу,

Насколько я увидел из вашего исходного запроса , эта формула одинакова для всех месяцев и пред.итога,
поэтому ее можно вынести прямо в подзапрос (чтоб не писать 13 раз) - что я сделал в запросе выше

При этом я взял формулу в том виде, как вы ее написали в вашем исходном посте,
и я НЕ знаю, насколько эта формула соответствует истинному смыслу ваших расчетов,
(ибо вы о нем не рассказывали, а просто написали некую формулу как данность.)

Так что ошибку вам придется искать самостоятельно.

Смотрите по аналогии с тем, как ранее (на первой странице) делали,
разбивая формулы на части и выводя их исходные составляюще значения в отдельные столбцы -
тогда можно видеть, как именно происходит счет и скорее понять что идет не так и как это подправить.

Успехов.

помоги плз....
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39170047
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smАнатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.

так можно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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


Как вывести Center при нулевых значениях всех полей если даже в каждой месяце по нулям :??
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171119
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smАнатолий ( Киев ),
мне нужно чтоб Итог до 2015 года +январь за 2015 года.

так можно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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



Из таб. qdfPayment делаем группировку по Centr с нарастающим итогом с учетом предыдущего года. Надо сделать Join со 2 табл. tblCenter где имеет столбец Center и нужно вывести те Center которые не используется в первой таблице.
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171261
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

в несколько расширенном варианте 280 кб --не влезает
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171265
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171267
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171268
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,
...
Рейтинг: 0 / 0
Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
    #39171269
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access. Надо сделать нарастающий итог по месяцам чтобы учитывался за предыдущие года
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]