grouping_sets - как использовать?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Вт Июл 02, 2013 07:15  grouping_sets - как использовать? |
|
Полезность: Нет оценки
|
Добрый день.
Примеров использования grouping_sets на форуме не нашел.
Подскажите, как его пользовать?
Такой вот код
Код: | ......
group by grouping_sets(
(f.HOUSE )
, (f.PERSONAL_AC)
--, (f.HOUSE, f.PERSONAL_AC)
) |
Транслируется в
Код: | group by GROUPING SETS(a1.HOUSE,a1.PERSONAL_AC); |
Сомневаюсь, что это правильно. По-мему, должно быть так:
Код: | group by GROUPING SETS((a1.HOUSE),(a1.PERSONAL_AC)); |
А вот закомментированный участок вообще не компилирует! Как получить такое:
Код: | group by GROUPING SETS((a1.HOUSE),(a1.PERSONAL_AC), (a1.HOUSE, a1.PERSONAL_AC)); |
|
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июл 04, 2013 05:49  Re: grouping_sets - как использовать? |
|
Полезность: Нет оценки
|
Damir пишет: |
А вот закомментированный участок вообще не компилирует! Как получить такое:
Код: | group by GROUPING SETS((a1.HOUSE),(a1.PERSONAL_AC), (a1.HOUSE, a1.PERSONAL_AC)); |
|
Random -чик, где ты, помоги....
Хоть скажи, это глюк и ваще никак или я просто готовить не умею? |
|
 |
Amper Профи
Вступление в Клуб: 29.10.2010
|
Чт Июл 04, 2013 08:41  Re: grouping_sets - как использовать? |
|
Полезность: 1
|
Damir пишет: | Добрый день.
Примеров использования grouping_sets на форуме не нашел.
Подскажите, как его пользовать?
Такой вот код
Код: | ......
group by grouping_sets(
(f.HOUSE )
, (f.PERSONAL_AC)
--, (f.HOUSE, f.PERSONAL_AC)
) |
Транслируется в
Код: | group by GROUPING SETS(a1.HOUSE,a1.PERSONAL_AC); |
Сомневаюсь, что это правильно. По-мему, должно быть так:
Код: | group by GROUPING SETS((a1.HOUSE),(a1.PERSONAL_AC)); |
А вот закомментированный участок вообще не компилирует! Как получить такое:
Код: | group by GROUPING SETS((a1.HOUSE),(a1.PERSONAL_AC), (a1.HOUSE, a1.PERSONAL_AC)); |
|
Попробуйте так:
Код: | ......
group by grouping_sets(
set(f.HOUSE )
, set(f.PERSONAL_AC)
, set(f.HOUSE, f.PERSONAL_AC)
) |
и будет вам счастье. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Июл 04, 2013 08:43   |
|
Полезность: Нет оценки
|
в отчотности есть такого вида куски кода, может чем поможет, я в теме не копенгаген
[code]
for (
select x
( nvl(x.[COUNTRY].[CODE], '999') : C_COUNTRY_CODE
, nvl(x.[COUNTRY].[NAME], 'страна не определена') : C_COUNTRY_NAME
, x.[FINTOOL].[CODE_ISO] : C_CUR_CODE
, nvl(&get_param('CODE_VO'),nvl(x.[I_117_CODE].[FULL_CODE], '00000')) : C_OP_CODE
, round( sum( case when x.[TUNING].[CODE] = '2.1.'
then nvl(x.[SUMMA_THS],0)
else 0 end)
, 3) : C_SPIS
, round( sum( case when x.[TUNING].[CODE] = '2.2.'
then nvl(x.[SUMMA_THS],0)
else 0 end)
, 3) : C_ZACH
, grouping(nvl(&get_param('CODE_VO'),nvl(x.[I_117_CODE].[FULL_CODE], '00000'))) : C_GRP
) in ::[F_664_DATA]
where x.[PARAM] = P_PARAM and x.[TUNING].[CODE] like '2.%'
group by GROUPING_SETS
(
set (x.[COUNTRY].[CODE],x.[COUNTRY].[NAME],x.[FINTOOL].[CODE_ISO],nvl(&get_param('CODE_VO'),nvl(x.[I_117_CODE].[FULL_CODE], '00000'))),
set (x.[COUNTRY].[CODE],x.[COUNTRY].[NAME],x.[FINTOOL].[CODE_ISO]),
set (x.[COUNTRY].[code],x.[COUNTRY].[NAME])
)
order by 1, 3 asc nulls first, 4 asc nulls first
)
loop
end loop;
[/code] |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июл 04, 2013 09:40  Re: grouping_sets - как использовать? |
|
Полезность: Нет оценки
|
Amper пишет: | Попробуйте так:
Код: | ......
group by grouping_sets(
set(f.HOUSE )
, set(f.PERSONAL_AC)
, set(f.HOUSE, f.PERSONAL_AC)
) |
и будет вам счастье. |
Во... в точку! Помогло!
Про ключевое слово SET в документации - весьма бедно.
И примеров нету. Добавьте хоть 1 пример в доку с GROUPING_SETS и SET.
Всё, что в доке есть....
Цитата: | В версии Oracle9i дополнительно могут использоваться псевдо-функции GROUPING_SETS и SET, которые при совместном использовании задают наборы для группировки. Псевдо-функция SET (равно как ROLLUP и CUBE) может использоваться для определения набора группируемых значений, каковые наборы, в свою очередь, передаются параметрами в GROUPING_SETS. |
PS: у нас не банк, мы ядром-то пользуемся как платформой для своих разработок, а банковских операций и отчетов стандартных (чтобы глянуть как надо) - у нас нет. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|