| 
 
  
	| 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: у нас не банк, мы ядром-то пользуемся как платформой для своих разработок, а банковских операций и отчетов стандартных (чтобы глянуть как надо) - у нас нет.
 |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |