powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
8 сообщений из 8, страница 1 из 1
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813775
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день, есть запрос
Код: c#
1.
2.
3.
4.
5.
6.
7.
SELECT 
MONTH(Datе) AS M,
YEAR (Datе) AS Y,
Sum(case when [name]=N'VVV' then sum else 0 end) AS Result
FROM    db
WHERE  (Date >= DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - 11, 0))
GROUP BY MONTH(Date),YEAR(Date)


Получается
№MYResult16 2018 12564027 2018 038 2018 4281349 2018 0510 2018 35225611 2018 602338712 2018 16904781 2019 092 2019 200839103 2019 137594114 2019 56274125 2019 34000
Все ОК, только есть одно но!
Если еще нет записей за последний(текущий) месяц выводится 11 значений, а не 12

№MYResult16 2018 12564027 2018 038 2018 4281349 2018 0510 2018 35225611 2018 602338712 2018 16904781 2019 092 2019 200839103 2019 137594114 2019 56274
А хотелось бы при отсутствии данных значений получить таблицу следующего вида,чтобы избежать лишнего кода в программе

№MYResult16 2018 12564027 2018 038 2018 4281349 2018 0510 2018 35225611 2018 602338712 2018 16904781 2019 092 2019 200839103 2019 137594114 2019 56274125 2019 0 или NULL

Это как то лечится в запросе? Или надо все таки в программе дорабатывать?
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813779
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdm114,

у тебя выборка из фактов, присоедини (outer join) её к нужному диапазону календаря, всё.
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813782
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее? Имеется ввиду, что должна быть какая то связанная таблица? Не совсем понял. Ну или пример какой, чтобы понять в какую сторону смотреть
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813788
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdm114,

В таблице db есть поле date откуда вы берете месяц и год.

Если в этой таблице нет пятого месяца для 19 года, то откуда база его вам выведет?

Сделайте сет с годом и месяцем и присоедините к нему свою таблицу.
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813794
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdm114...А можно поподробнее?...
например так или так :
Код: sql
1.
2.
3.
4.
with a as(select 1 i union all select i+1 from a where i<12),
b as(select i,month(dateadd(month,i-12,current_timestamp))m,year(dateadd(month,i-12,current_timestamp))y from a),
c as(select m,y,s from(values(2018,8,9999),(2018,11,7777),(2019,3,2222))x(y,m,s))
select i,b.m,b.y,c.s from b left outer join c on b.y=c.y and b.m=c.m

где таблица b это измерение с необходимой длинной/кол-вом строк с полями (номер, месяц, год)
и таблица c это какой-то образец агрегированных фактов которые надо размазать/натянуть на трафарет из 12ти строк
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813796
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если обязательно нули нужны (некоторые интерфейсы бывает ругаются) то замени в последней строке c.s на coalesce(c.s,0)s
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39813807
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, буду разбираться
...
Рейтинг: 0 / 0
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
    #39814083
mdm114
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо!!! Все фунициклирует в лучшем виде!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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