Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2019, 13:28   #11
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Попробуй заменить это Recursive на что-то попроще. Судя по цвету воспринимается как зарезервированное слово
Разобрался, прошу прощения) Сейчас буду тестировать код)
спасибо огромное)
mavrikVIII вне форума Ответить с цитированием
Старый 13.03.2019, 14:09   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mavrikVIII Посмотреть сообщение
Разобрался, прошу прощения)
так что было не так?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2019, 14:28   #13
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так что было не так?
после USE он требовал ; =)
mavrikVIII вне форума Ответить с цитированием
Старый 13.03.2019, 14:39   #14
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Есть еще одна задачка. Абы как смог сделать общие суммы начислений за каждый месяц по каждой услуге за все время с сортировкой по месяцам, с под итогами.
Но вот вывести общие суммы начислений за каждый месяц по каждой услуге за все время, так чтобы услуги были строках, месяца в столбцах я не понимаю,как это вообще можно сделать?
Как изменять имена столбцов так, как надо + чтоб столбцов было именно столько, сколько и месяцев.
Изображения
Тип файла: png 123.png (31.6 Кб, 148 просмотров)
mavrikVIII вне форума Ответить с цитированием
Старый 13.03.2019, 14:46   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Группируй по месяцу Month(D_Date)
И делай вычисляемые колонки типа
SUM(CASE WHEN Month(D_Date) =1 THEN N_Amount ELSE 0 END) AS Mon1,
SUM(CASE WHEN Month(D_Date) =2 THEN N_Amount ELSE 0 END) AS Mon2,

PS ой, группировать по услугам
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.03.2019 в 14:53.
Аватар вне форума Ответить с цитированием
Старый 13.03.2019, 15:33   #16
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Группируй по месяцу Month(D_Date)
И делай вычисляемые колонки типа
SUM(CASE WHEN Month(D_Date) =1 THEN N_Amount ELSE 0 END) AS Mon1,
SUM(CASE WHEN Month(D_Date) =2 THEN N_Amount ELSE 0 END) AS Mon2,

PS ой, группировать по услугам
Большое спасибо, работает. Только есть один подводный камень: при сортировке по дате он выведет не правильно - он выведет 12 месяц последним, но в данной таблице он не последний, потому что прошлогодний, а писать
SUM(CASE WHEN FORMAT(D_Date,'yyyyMM') =201812 THEN N_Amount ELSE 0 END) AS 201812,
SUM(CASE WHEN FORMAT(D_Date,'yyyyMM') =201901 THEN N_Amount ELSE 0 END) AS 201901 мне кажется не есть правильно. Это можно как-то оптимизировать?
mavrikVIII вне форума Ответить с цитированием
Старый 13.03.2019, 15:38   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от mavrikVIII Посмотреть сообщение
Большое спасибо, работает. Только есть один подводный камень: при сортировке по дате он выведет не правильно - он выведет 12 месяц последним
как раз нужно по дате сортировать (а не по месяцу, как Вы, скорее всего, делаете):
Код:
SELECT SUM(CASE WHEN Month(D_Date) =1 THEN N_Amount ELSE 0 END) AS Mon1,
 ...
ORDER BY D_Date
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2019, 15:52   #18
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
как раз нужно по дате сортировать (а не по месяцу, как Вы, скорее всего, делаете):
Код:
SELECT SUM(CASE WHEN Month(D_Date) =1 THEN N_Amount ELSE 0 END) AS Mon1,
 ...
ORDER BY D_Date
При попытке сортировать по дате он ругается:
"Столбец "FD_Bills.D_Date" недопустим в предложении ORDER BY, так как он не содержится в агрегатной функции или предложении GROUP BY. "
mavrikVIII вне форума Ответить с цитированием
Старый 13.03.2019, 16:08   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сортировка не при чем, выводи первым столбцом декабрь или какой нужен, запрос если что и динамически можно сформировать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.03.2019, 16:12   #20
mavrikVIII
Пользователь
 
Регистрация: 13.03.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сортировка не при чем, выводи первым столбцом декабрь или какой нужен, запрос если что и динамически можно сформировать
Так это меня и интересует. Динамический запрос, который будет учитывать и год тоже, а не конкретное решение конкретной задачи) А вдруг будет запрос, по которому надо вывести данные по месяцам за несколько лет?) Их надо будет вводить вручную так же?
mavrikVIII вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите начинающему Родион23 C# (си шарп) 6 23.05.2016 23:43
Помогите начинающему qeesl Общие вопросы по Java, Java SE, Kotlin 5 31.10.2015 19:01
Помогите начинающему. Небесный Общие вопросы Delphi 12 04.02.2007 08:56