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

Откуда: Энергодар
Сообщений: 84
Есть операторы(oper) с разными типами(tip), от которых получили некую сумму (s) в валюте (val)
нужно подсчитать итоги по КАЖДОЙ группе см. пример
WITH t AS (SELECT 'a' AS oper,100 AS s, 'USD' AS val, '1' AS tip  FROM DUAL UNION ALL
           SELECT 'a' , 100, 'UAH', '1' FROM DUAL UNION ALL
           SELECT 'b' , 100, 'UAH', '1' FROM DUAL UNION ALL
           SELECT 'b' , 100, 'USD', '2' FROM DUAL UNION ALL
           SELECT 'c' , 100, 'UAH', '2' FROM DUAL UNION ALL
           SELECT 'c' , 200, 'UAH', '2' FROM DUAL)
SELECT oper, sum(s), val, tip
  FROM t
 GROUP BY  tip, val, ROLLUP ((oper, s))
 ORDER BY tip, oper
результат:
    tip      oper   sum(s) val
1	1	a	100	USD
2	1	a	100	UAH
3	1	b	100	UAH
4	1		200	UAH
5	1		100	USD
6	2	b	100	USD
7	2	c	100	UAH
8	2	c	200	UAH
9	2		300	UAH
10	2		100	USD
можно ли еще как нибудь подсчитать итог по ВСЕМ группам не использую UNION
чтоб получился результат примерно такой:
     tip      oper   sum(s) val
1	1	a	100	USD
2	1	a	100	UAH
3	1	b	100	UAH
4	1		200	UAH
5	1		100	USD
6	2	b	100	USD
7	2	c	100	UAH
8	2	c	200	UAH
9	2		300	UAH
10	2		100	USD
11			200	USD
12			500	UAH
9 янв 09, 13:25    [6658769]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
-=Костик=-,

GROUP BY  ROLLUP (tip, val, oper, s)
или
GROUP BY  CUBE (tip, val, oper, s)
9 янв 09, 13:29    [6658791]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
-=Костик=-
Member

Откуда: Энергодар
Сообщений: 84
не помогает
9 янв 09, 13:38    [6658837]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
-=Костик=-,

оЧеПятка :)
колонку s убери
9 янв 09, 13:46    [6658880]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить