Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Rollup - Сделать группировку с подитогами по году, полугодию, кварталу, месяцу... / 2 сообщений из 2, страница 1 из 1
03.11.2018, 14:00
    #39727560
avpetrov27
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rollup - Сделать группировку с подитогами по году, полугодию, кварталу, месяцу...
Всем привет!

Есть таблица с данными:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table Table1
(_date datetime,
_value int)
insert into Table1 values ('01-01-2018', 9)
insert into Table1 values ('07-01-2018', 8)
insert into Table1 values ('02-02-2018', 7)
insert into Table1 values ('28-02-2018', 6)
insert into Table1 values ('01-03-2018', 5)
insert into Table1 values ('01-06-2018', 5)
insert into Table1 values ('01-07-2018', 5)
insert into Table1 values ('01-08-2018', 5)
insert into Table1 values ('01-09-2018', 5)
insert into Table1 values ('31-12-2018', 5)


Задача: Нужно получить сумму по _value с подитогами.
Скрипт:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
	year(_date) as _year,
	(datepart(quarter, _date)-1)/2 + 1 as _halfYear,
	datepart(quarter, _date) as _quarter,
	month(_date) as _month,
	sum(_value) as _Sum
from Table1
group by
	year(_date),
	rollup(
	(datepart(quarter, _date)-1)/2 + 1,
	datepart(quarter, _date),
	month(_date)
	)


Результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
_year	halfYear	_quarter	_month	_Sum
2018	1	1	1	17
2018	1	1	2	13
2018	1	1	3	5
2018	1	1	NULL	35
2018	1	2	6	5
2018	1	2	NULL	5
2018	*NULL	NULL	NULL	40
2018	2	3	7	5
2018	2	3	8	5
2018	2	3	9	5
2018	2	3	NULL	15
2018	2	4	12	5
2018	2	4	NULL	5
2018	*NULL	NULL	NULL	20
2018	NULL	NULL	NULL	60


Проблема: В строках подитогов полугодий - отображается NULL-значения(выделил *), а не номер полугодия.
Подскажите, как можно корректно переписать условие на группировку полугодия?
Спасибо.
...
Рейтинг: 0 / 0
03.11.2018, 14:10
    #39727562
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rollup - Сделать группировку с подитогами по году, полугодию, кварталу, месяцу...
а так
Код: 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.
29.
with t as
(
select {d '2018-01-01'} as _date, 1 value  union
select {d '2017-01-01'} as _date, 2 value 
),
tt as
(
select 
	year(_date) as _year,
	(datepart(quarter, _date)-1)/2 + 1 as _halfYear,
	 datepart(quarter, _date) as _quarter,
	month(_date) as _month,
    value
 from t
)

select  _year,
	_halfYear,
	_quarter,
	_month,
        sum(value)
from tt
group by
	_year,
	rollup(
        _halfYear,
	_quarter,
	_month
	)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Rollup - Сделать группировку с подитогами по году, полугодию, кварталу, месяцу... / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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