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

Откуда:
Сообщений: 2030
есть селект типа
select 'a1' A, 'b1' B, 'c1' C, 11 N
from dual union
select 'a1', 'b1', 'c2', 22 
from dual union
select 'a1', 'b2', 'c3', 55
from dual union
select 'a2', 'b3', 'c4', 44
from dual union
select 'a2', 'b4', 'c5', 99
from dual union
select 'a2', 'b4', 'c6', 66
from dual

нужно вывести промежуточные итоги по A=a1 и A=a2

проблема в том, что мне _не_ нужны подитоги по A,B,C и по A,B

вобщем, результат должен быть эквивалентен вот этому

with x as(
select 'a1' A, 'b1' B, 'c1' C, 11 N
from dual union
select 'a1', 'b1', 'c2', 22 
from dual union
select 'a1', 'b2', 'c3', 55
from dual union
select 'a2', 'b3', 'c4', 44
from dual union
select 'a2', 'b4', 'c5', 99
from dual union
select 'a2', 'b4', 'c6', 66
from dual
)
select case when b is null then 'Итого по: '||a else a end case,b,c,n
from
(
select a,b,c,n from x
union
select a,null b,null c,sum(n) from x
group by a
order by 1,2,3 nulls last
)
17 апр 09, 14:57    [7079618]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с rollup  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
SQL> with x as(
  2  select 'a1' A, 'b1' B, 'c1' C, 11 N
  3  from dual union
  4  select 'a1', 'b1', 'c2', 22
  5  from dual union
  6  select 'a1', 'b2', 'c3', 55
  7  from dual union
  8  select 'a2', 'b3', 'c4', 44
  9  from dual union
 10  select 'a2', 'b4', 'c5', 99
 11  from dual union
 12  select 'a2', 'b4', 'c6', 66
 13  from dual
 14  )
 15  select a, b, c, sum(n) from x group by grouping sets((a, b, c),(a))
 16  /
 
A  B  C      SUM(N)
-- -- -- ----------
a1 b1 c1         11
a1 b1 c2         22
a1 b2 c3         55
a1               88
a2 b3 c4         44
a2 b4 c5         99
a2 b4 c6         66
a2              209
 
8 rows selected
 
SQL> 
17 апр 09, 15:04    [7079665]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться с rollup  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
group by rollup(a, (b, c))
having grouping(a) = 0
17 апр 09, 15:04    [7079666]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить