Группировка наборов по году, месяцу и дате
Можно ли свести дату, месяц и год, используя GROUPING SETS
где даты показаны и сгруппированы в месяц и год, а значение для месяца и года отображается вместо null
?
Вот пример данных и моя попытка использования группировок
create table #tbl_data
(
employeeId int
,productLine int
,salesDate datetime
,salesTotal money
)
insert into #tbl_data
values
(1,1,'02/09/2017',199)
,(1,1,'04/10/2017',379)
,(2,1,'04/21/2017',323)
,(2,1,'04/10/2017',461)
,(2,1,'06/11/2017',304)
,(3,1,'01/28/2017',147)
,(3,1,'02/09/2017',320)
,(4,1,'03/07/2017',344)
,(4,1,'03/13/2017',176)
select
productLine,
employeeId,
salesDate,
mon=month(salesdate),
yr=year(salesdate),
sum(salesTotal) as salesTotal
from
#tbl_data
group by grouping sets
(
(productLine, employeeId, salesDate)
,(productLine, employeeId)
,(productLine)
)
Вот что вернул запрос (слева) и что я хотел сделать (справа)
1 ответ
Решение
Вы можете использовать:
;WITH cte AS (
select
productLine,
employeeId,
salesDate,
mon=month(salesdate),
yr=year(salesdate),
salesTotal
from #tbl_data
)
select
productLine,
employeeId,
salesDate,
mon,
yr ,
sum(salesTotal) as salesTotal
from cte
group by grouping sets
(
(productLine, employeeId, salesDate, yr)
,(productLine, employeeId, yr)
,(productLine)
,(productLine, mon, yr)
);