powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вернуть "Имя" группы при множ. группировке
4 сообщений из 4, страница 1 из 1
Вернуть "Имя" группы при множ. группировке
    #40015558
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !


Как вернуть значение поля группы
Идентифицирую множественную группировку как Gn

Имею скрипт
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select  Case when Grouping_id('G1')=0 then 'G1'
                  when Grouping_id('G2')=0 then 'G2'
                  when Grouping_id('G3')=0 then 'G3'
           end  F1,
           Sum(F2)  F2
   from MyTable
 group by grouping sets 
         ( ('G1',......),
           ('G2',......),
           ('G3',......)
         )



Хотел бы опустить Case
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select  
           Grouping_Name(1) F1, -- вернуть 'G1','G2','G3'
           Sum(F2)  F2
   from MyTable
 group by grouping sets 
         ( ('G1',......),
           ('G2',......),
           ('G3',......)
         )



Какие варианты возможны ?
(union all не надо)

Заранне благодарен !
...
Рейтинг: 0 / 0
Вернуть "Имя" группы при множ. группировке
    #40015579
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

я даж не додумался что в grouping sets можно вбить и константы 'G1','G2','G3'

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> ed
Wrote file afiedt.buf

  1  select  deptno,job,Sum(sal)  F2
  2     from emp
  3   group by grouping sets
  4           ( ('всего по dj',deptno,job),
  5             ('Всего по d',deptno),
  6             ('Всего')
  7*          )
SQL> /

    DEPTNO JOB               F2
---------- --------- ----------
        10 MANAGER         2450
        20 ANALYST         6000
        30 MANAGER         2850
        10 CLERK           1300
        10 PRESIDENT       5000
        30 SALESMAN        5600
        20 CLERK           1900
        20 MANAGER         2975
        30 CLERK            950
        30                 9400
        10                 8750
        20                10875
                          29025

13 rows selected.

SQL>



Вы хотите Всего хх вытащить ф-цией?
.....
stax
...
Рейтинг: 0 / 0
Вернуть "Имя" группы при множ. группировке
    #40015587
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

у меня одну и ту же выборку необходимо сгруппировать с разными действиями (Sum,Count)
и расположить вертикально , отсюда grouping sets

И "имя" группы определяет еще и действия

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select  Case when Grouping_id('G1')=0 then 'G1'
                  when Grouping_id('G2')=0 then 'G2'
                  when Grouping_id('G3')=0 then 'G3'
           end  F1,
          Case when Grouping_id('G1')=0 then Sum(F2)
                  when Grouping_id('G2')=0 then Count(Distinct F3)
                  when Grouping_id('G3')=0 then Count(*)
           end  F2
   from MyTable
 group by grouping sets 
         ( ('G1',......),
           ('G2',......),
           ('G3',......)
         )



"Вы хотите Всего хх вытащить ф-цией?"
Слишком много Case - хотелось бы более лаконичнее
...
Рейтинг: 0 / 0
Вернуть "Имя" группы при множ. группировке
    #40015593
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Слишком много Case - хотелось бы более лаконичнее

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions063.htm
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вернуть "Имя" группы при множ. группировке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]