Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как добавить в select .... with rollup колонку итог?  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
Как добавить в select .... with rollup колонку итог?

declare @t table(Id1 int identity(1,1),
ID int,col1 int, col2 int)

insert into @t(ID,col1,col2)
select 1047307,317, 1396
insert into @t(ID,col1,col2)
select 1047307,317, 1396
insert into @t(ID,col1,col2)
select 1047307,317, 1396
insert into @t(ID,col1,col2)
select 1047307,317, 1396


insert into @t(ID,col1,col2)
select 1047320,40, 160
insert into @t(ID,col1,col2)
select 1047320,40, 160
insert into @t(ID,col1,col2)
select 1047320,40, 160
insert into @t(ID,col1,col2)
select 1047320,40, 160


select ID, sum(col1) as col_1, min(col2) as col_2
from @t
group by ID, col1+id1, col2+id1 with rollup
having grouping(ID) = 0
and ( grouping(col1+id1) = 0 and grouping(col2+id1) = 0
or grouping(col1+id1) = 1 and grouping(col2+id1) = 1)
19 дек 11, 10:21    [11786979]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
???

;with cte as (
  select t1.ID, sum(col1) as col_1, min(col2) as col_2, col1+id1 [a]
  from @t t1
  group by t1.ID, col1+id1, col2+id1
  with rollup
  having grouping(t1.ID) = 0 
  and ( grouping(col1+id1) = 0 and grouping(col2+id1) = 0
  or grouping(col1+id1) = 1 and grouping(col2+id1) = 1)
)
select t1.id, t1.col_1, t1.col_2, isnull(t2.total, t1.col_1) [Total_col_1]
from cte t1
left join (select id, sum(col1) over(partition by id) [total], col1+id1 [a] from @t) t2 on t1.a = t2.a

idcol_1col_2Total_col_1
104730731713961268
104730731713961268
104730731713961268
104730731713961268
1047307126813961268
104732040160160
104732040160160
104732040160160
104732040160160
1047320160160160
19 дек 11, 10:53    [11787181]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
Начинающий SQL 2008,
подскажите как в результирующую таблицу добавить колонку со словом итог в строках с итогами?
19 дек 11, 12:03    [11787699]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
libru
Member

Откуда:
Сообщений: 877
постановка задачи жесть
19 дек 11, 12:11    [11787747]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
aleks2
Guest
elect ID, sum(col1) as col_1, min(col2) as col_2, grouping(ID) gID, grouping(col1+id1) gC1ID1, grouping(col2+id1) C2ID1
,case when grouping(ID)=1 then 'Итог' else '' end [как в результирующую таблицу добавить колонку со словом итог в строках с итогами]
from @t
group by ID, col1+id1, col2+id1 with rollup
19 дек 11, 12:14    [11787769]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
МИхаил__________________
Member

Откуда:
Сообщений: 573
aleks2,
код не правильно работает
19 дек 11, 12:58    [11788093]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
МИхаил__________________,

нарисуйте таблицу примерно, как здесь, что должно получиться.
19 дек 11, 14:22    [11789037]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
aleks2
Guest
МИхаил__________________
aleks2,
код не правильно работает

Ээээ, милай, это всего лишь пища для размышления. А правильно - ты уж сам.
19 дек 11, 18:03    [11791318]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в select .... with rollup колонку итог?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select ID, sum(col1) as col_1, min(col2) as col_2
from @t
group by ID, col1+id1, col2+id1 with cube  --- ???
having grouping(ID) = 0
and ( grouping(col1+id1) = 0 and grouping(col2+id1) = 0
or grouping(col1+id1) = 1 and grouping(col2+id1) = 1) 
19 дек 11, 18:16    [11791419]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить