Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц / 8 сообщений из 8, страница 1 из 1
15.05.2019, 21:44
    #39813775
mdm114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
Всем добрый день, есть запрос
Код: 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
15.05.2019, 22:08
    #39813779
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
mdm114,

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

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

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

Сделайте сет с годом и месяцем и присоедините к нему свою таблицу.
...
Рейтинг: 0 / 0
15.05.2019, 23:44
    #39813794
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
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
15.05.2019, 23:52
    #39813796
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
если обязательно нули нужны (некоторые интерфейсы бывает ругаются) то замени в последней строке c.s на coalesce(c.s,0)s
...
Рейтинг: 0 / 0
16.05.2019, 06:42
    #39813807
mdm114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
спасибо, буду разбираться
...
Рейтинг: 0 / 0
16.05.2019, 14:56
    #39814083
mdm114
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц
Еще раз спасибо!!! Все фунициклирует в лучшем виде!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка за последние 12 месяцев с учетом отсутствия данных за текущий месяц / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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