Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по группировке  [new]
Andrey Pogorelov
Member

Откуда: Ростов-на-Дону
Сообщений: 312
Привет всем. Есть табличка с данными за год, необходимо просуммировать выборку поквартально, т.е. должно получится так:
   COLUMN1    COLUMN2    COLUMN3 
     2 008          1         10 
     2 008          2         20 
     2 008          3         10 
                                 40
     2 008          4         20 
     2 008          5         40 
     2 008          6         50 
                                110 
     2 008          7         20 
     2 008          8         50 
     2 008          9         60
                                130 
     2 008         10         30 
     2 008         11         20 
     2 008         12         10 
                                  60
     2 008                    340 
пытаюсь реализовать.
drop TABLE #temp
create table #temp (dd datetime, ss int)

insert into #temp values ('20080101', 10)
insert into #temp values ('20080201', 20)
insert into #temp values ('20080301', 10)
insert into #temp values ('20080401', 20)
insert into #temp values ('20080501', 40)
insert into #temp values ('20080601', 50)
insert into #temp values ('20080701', 20)
insert into #temp values ('20080801', 50)
insert into #temp values ('20080901', 60)
insert into #temp values ('20081001', 30)
insert into #temp values ('20081101', 20)
insert into #temp values ('20081201', 10)

select datepart(yy, dd), datepart(mm, dd), sum(ss)
from #temp
group by
  datepart(yy, dd), datepart(mm, dd)
  with rollup

select datepart(yy, dd), (datepart(mm, dd) - 1) / 3 + 1 as qw, sum(ss)
from #temp
group by
 datepart(yy, dd), (datepart(mm, dd) - 1) / 3 + 1
  with rollup
Максимум что получилось это сгруппировать за год или за квартал но без исходных данных
12 авг 09, 15:25    [7528588]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
select datepart(yy, dd)
      ,(datepart(mm, dd) - 1) / 3 + 1 as qw
      ,dd
      ,sum(ss)
      ,grouping(datepart(yy, dd)) as gr_yy
      ,grouping((datepart(mm, dd) - 1) / 3 + 1) as gr_qw
      ,grouping(dd) as gr_dd
from #temp
group by datepart(yy, dd)
        ,(datepart(mm, dd) - 1) / 3 + 1
        ,dd
 with rollup
12 авг 09, 15:33    [7528668]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
select
dd
,datepart(qq,dd)
,sum(ss)
from
#temp
group by
datepart(qq,dd)
,dd
with rollup
12 авг 09, 15:35    [7528684]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
iljy
Member

Откуда:
Сообщений: 8711
Andrey Pogorelov,

select * from
(
	select datepart(yy, dd) y, datepart(q, dd) q, datepart(mm, dd) m, ss, sum(ss) sum_s
	from #temp
	group by
	  datepart(yy, dd), datepart(q, dd), datepart(mm, dd), ss
	  with rollup
) t
where y is not null and
		(ss is not null or coalesce(ss,m) is null)
12 авг 09, 15:36    [7528690]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
если уж совсем как хочет автор то:
select
        dd
        ,datepart(mm,dd)
        ,sum(ss)
    from
        #temp
    group by
        datepart(qq,dd)
        ,dd
    with rollup
12 авг 09, 15:38    [7528711]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Andrey Pogorelov
Member

Откуда: Ростов-на-Дону
Сообщений: 312
Всем огромное спасибо!
12 авг 09, 15:41    [7528750]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
BOL 2008

...
WITH ROLLUP
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется....
12 авг 09, 16:22    [7529081]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
если 2008+
то
group by
        datepart(qq,dd)
        ,dd
    with rollup

замени на
   group by rollup(datepart(qq,dd),dd) 
12 авг 09, 16:26    [7529127]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Ну вот, сами ж только что привели цитату, в которой with rollup использовать не рекомендуется
Я думал, Вы приведете вариант без with rollup...
12 авг 09, 16:27    [7529149]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
Паганель
Ну вот, сами ж только что привели цитату, в которой with rollup использовать не рекомендуется
Я думал, Вы приведете вариант без with rollup...


rollup и with rollup - это разные операторы
12 авг 09, 16:28    [7529160]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по группировке  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
ИМХО... если 2008+ то reporting services, а то и analysis services в зависимости от...
12 авг 09, 16:31    [7529190]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить