Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access. Вывести отчет по месяцам. / 19 сообщений из 19, страница 1 из 1
28.01.2016, 10:10
    #39157188
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Добрый день. Отчет по месяцам.
См. скриншот. Надо сделать так, чтоб на одном линии были все отчеты. Убрать нули. Как это сделать?
исходный код:

SELECT IIf(Month(PaymentDate)=1 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Jun, IIf(Month(PaymentDate)=2 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Feb, IIf(Month(PaymentDate)=3 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS March, IIf(Month(PaymentDate)=4 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Apr, IIf(Month(PaymentDate)=5 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS May, IIf(Month(PaymentDate)=6 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS June, IIf(Month(PaymentDate)=7 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS July, IIf(Month(PaymentDate)=8 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Aug, IIf(Month(PaymentDate)=9 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Sept, IIf(Month(PaymentDate)=10 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Oct, IIf(Month(PaymentDate)=11 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS Dov, IIf(Month(PaymentDate)=12 And Year(PaymentDate)=2015,SUM(qdfPayments.IncomeAmount),0) AS [Dec]
FROM qdfPayments
GROUP BY Month(PaymentDate), Year(PaymentDate);
...
Рейтинг: 0 / 0
28.01.2016, 10:28
    #39157201
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,
в таблице имеются данные за январь и февраль месяц.
...
Рейтинг: 0 / 0
28.01.2016, 10:53
    #39157231
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Сначала можно немножко упростить запись запроса
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
-Sum(IncomeAmount*(Month(PaymentDate)=1)) As Jun, 
-Sum(IncomeAmount*(Month(PaymentDate)=2)) As Feb, 
-Sum(IncomeAmount*(Month(PaymentDate)=3)) As March, 
........ 
FROM  qdfPayments
WHERE Year(PaymentDate) = 2015
GROUP BY Month(PaymentDate)
...
Рейтинг: 0 / 0
28.01.2016, 11:09
    #39157242
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,


Результат вышел с "-".
...
Рейтинг: 0 / 0
28.01.2016, 11:17
    #39157251
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

А Вы обратили внимание на -Sum (с минусом) в запросе?
...
Рейтинг: 0 / 0
28.01.2016, 11:21
    #39157255
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

И еще, сразу упустила - уберите группировку в моем варианте запроса.
Результат будет в одну строку.
...
Рейтинг: 0 / 0
28.01.2016, 11:23
    #39157257
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,
Да. Я убрала. Но результат мне нужен, чтоб было на одной строке.

январь февраль
400 100

SELECT Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1)) As Jun, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=2)) As Feb, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=3)) As March
FROM qdfPayments
WHERE Year(PaymentDate) = 2015
GROUP BY Month(PaymentDate), Year(PaymentDate);
...
Рейтинг: 0 / 0
28.01.2016, 11:27
    #39157259
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

Минус убрала?))) Как раз-таки этого делать не нужно.
Он на месте.
...
Рейтинг: 0 / 0
28.01.2016, 11:29
    #39157260
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,
Где минус?
вот код.
Результат
-400 -100
SELECT Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1)) As Jun, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=2)) As Feb, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=3)) As March
FROM qdfPayments
WHERE Year(PaymentDate) = 2015
...
Рейтинг: 0 / 0
28.01.2016, 11:34
    #39157267
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm__Michelle,
Где минус?
вот код.
Результат
-400 -100
SELECT Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1)) As Jun, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=2)) As Feb, Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=3)) As March
FROM qdfPayments
WHERE Year(PaymentDate) = 2015Вот здесь минус(ы) 18739144 .
А у Вас их нет.
Будьте внимательнее.
-Sum , что стоит в начале, видите?
...
Рейтинг: 0 / 0
28.01.2016, 11:40
    #39157276
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,

Всё добавила. Спасибо!
...
Рейтинг: 0 / 0
28.01.2016, 11:57
    #39157293
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,

А как создать след строку с такими параметрами только другими вычислениями SUM()?
...
Рейтинг: 0 / 0
28.01.2016, 12:01
    #39157297
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

Объединить результаты (строки) с помощью UNION ALL.
...
Рейтинг: 0 / 0
28.01.2016, 12:36
    #39157336
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
__Michelle,
Всё получилось. А как сделать Разница итогов строки "Выручка" и строки "Себестоимость" по месяцам



SELECT 1 AS ID, 'Выручка' AS Operation, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1)) AS Jun, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=2)) AS Feb, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=3)) AS March, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=4)) AS Apr, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=5)) AS May, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=6)) AS June, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=7)) AS Jul, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=8)) AS [Avg], -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=9)) AS Sept, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=10)) AS Oct, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=11)) AS Nov, -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=12)) AS [Dec]
FROM qdfPayments
WHERE (((Year([PaymentDate]))=2015) AND ((qdfPayments.ManagerPayCalc)='Закрыт') AND ((qdfPayments.TransactionType)='Поступления'))
UNION
SELECT 2 AS ID, 'Себестоимость' AS Operation, -Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=1)) As Jun,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=2)) As Feb,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=3)) As March,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=4)) As Apr,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=5)) As May,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=6)) As June,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=7)) As Jul,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=8)) As Avg,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=9)) As Sept,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=10)) As Oct,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=11)) As Nov,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=12)) As Dec
FROM qdfPayments
WHERE Year(PaymentDate) = 2015 AND
qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке'
UNION
SELECT 3 AS ID, 'Расходы прочие' AS Operation, -Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=1)) As Jun,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=2)) As Feb,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=3)) As March,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=4)) As Apr,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=5)) As May,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=6)) As June,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=7)) As Jul,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=8)) As Avg,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=9)) As Sept,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=10)) As Oct,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=11)) As Nov,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=12)) As Dec
FROM qdfPayments
WHERE Year(PaymentDate) = 2015 AND qdfPayments.TransactionType = 'Расходы прочие'

UNION
SELECT 4 AS ID, 'Распределенная прибыль' AS Operation, -Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=1)) As Jun,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=2)) As Feb,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=3)) As March,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=4)) As Apr,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=5)) As May,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=6)) As June,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=7)) As Jul,
-Sum(qdfPayments.PaymentAmountt*(Month(PaymentDate)=8)) As Avg,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=9)) As Sept,
- Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=10)) As Oct,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=11)) As Nov,
-Sum(qdfPayments.PaymentAmount*(Month(PaymentDate)=12)) As Dec
FROM qdfPayments
WHERE Year(PaymentDate) = 2015 AND qdfPayments.TransactionType = 'Прибыль, дивиденды'
...
Рейтинг: 0 / 0
28.01.2016, 14:19
    #39157504
Шыфл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

Вообще-то удобнее в Excele ^_^. A так вообще - тем же union all. Что-то типа

Код: sql
1.
2.
3.
select 'Выручка-Себестоимость' AS Operation,
 -Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления') 
+ Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке') AS Jun
...
Рейтинг: 0 / 0
28.01.2016, 14:33
    #39157520
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Шыфл,

Ошибка синтаксиса в запросе на объединение. не получается
...
Рейтинг: 0 / 0
28.01.2016, 14:47
    #39157555
Шыфл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

ну, так исправте её исходя из основной идеи. :) Может так
Код: sql
1.
2.
3.
4.
5.
select 'Выручка-Себестоимость' AS Operation,
Sum(
-qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления') 
+qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке')
) AS Jun
...
Рейтинг: 0 / 0
28.01.2016, 14:55
    #39157574
Ainur.sm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Шыфл,
Спасибо, получилось
код:
-Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Поступления') )
+ Sum(qdfPayments.IncomeAmount*(Month(PaymentDate)=1 and qdfPayments.ManagerPayCalc = 'Закрыт' AND qdfPayments.TransactionType = 'Затраты по заявке') )AS Jun,
...
Рейтинг: 0 / 0
28.01.2016, 15:41
    #39157644
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access. Вывести отчет по месяцам.
Ainur.sm,

я бы сделала так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
TRANSFORM Sum(w.сумма) AS [Sum-сумма]
SELECT Format(w.дата,"yyyy") AS Выражение1,
 w.с1.ктип,
 w.наим_тип,
 Sum(w.сумма)  as "итого"
FROM (SELECT с1.ктип, с1.наим_тип, т1.[дата],  т1.[Код], т1.[сумма]
      FROM с1, т1 where с1.ктип = т1.ктип 
      union all
      SELECT 4, "распределенная прибыль", т1.[дата],  т1.[Код], т1.[сумма]
      FROM с1, т1 where с1.ктип = 1 and т1.ктип=1
      UNION ALL 
      SELECT 4, "распределенная прибыль", т1.[дата],  т1.[Код], -т1.[сумма]
      FROM с1 , т1 where с1.ктип = 2 and т1.ктип=2) w
GROUP BY Format(w.дата,"yyyy"), w.с1.ктип, w.наим_тип
PIVOT Format(w.дата,"mm mmm");


годктипнаим_тип"итого"01 янв02 фев03 мар04 апр05 май06 июн07 июл08 авг09 сен10 окт11 ноя12 дек20151выручка740112100968480686452483620152себестоим3801089276604420153прочее3601048872564020154распределенная прибыль360410096-928446864-605243620161выручка323220164распределенная прибыль3232
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access. Вывести отчет по месяцам. / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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