2015-12-18 3 views
1

Я выбираю некоторую информацию из таблицы объектов и заполняя другой тип.Группа В таблице объектов оракула

Я пытаюсь использовать предложение GROUP BY в таблице объектов. Однако я продолжаю получать ORA-00979: not a GROUP BY expression

my_type   object_type1; 
l_TBL_OF_my_type object_type1_tbl; --table of object_type1 
Source_type_TBL object_type2_tbl; --table of another object_type 

SELECT my_type(TBL.NAME, 
       TBL.SOURCE_NAME, 
       null, 
       null, 
       TBL.TARGET_NAME, 
       NULL, 
       NULL, 
       NULL, 
       1, 
       NULL) BULK COLLECT 
     INTO l_TBL_OF_my_type 
     FROM TABLE(Source_type_TBL) TBL 
     GROUP BY TBL.TARGET_NAME; 

Как я могу решить эту проблему?

+1

Что вы пытаетесь достичь, выполняя это? Насколько я могу судить. Это поможет, если вы сможете обновить свой вопрос, чтобы предоставить полный тестовый пример, чтобы мы могли сами воссоздать ваши типы, таблицы, данные и т. Д. (Так как мы не можем видеть вашу базу данных или ее содержимое), а также данные, которые вы ожидая, что ваш оператор select будет возвращен. – Boneist

+0

Это работает, если вы удалите предложение GROUP BY? – MT0

+0

Эта работа, если вы не используете my_type() Bulk COLLECT? –

ответ

0

Я решил.

Мне пришлось группировать все выбранные поля.

SELECT my_type(TBL.NAME, 
       TBL.SOURCE_NAME, 
       null, 
       null, 
       TBL.TARGET_NAME, 
       NULL, 
       NULL, 
       NULL, 
       1, 
       NULL) BULK COLLECT 
     INTO l_TBL_OF_my_type 
     FROM TABLE(Source_type_TBL) TBL 
     GROUP BY TBL.NAME, TBL.SOURCE_NAME, TBL.TARGET_NAME; 
0

Попробуйте это. COLLECT - это совокупная функция, которая принимает в качестве аргумента столбец любого типа и создает вложенную таблицу типа ввода.
cast - конвертировать временную коллекцию в вашу коллекцию.

SELECT cast(collect(my_type(TBL.NAME, 
       TBL.SOURCE_NAME, 
       null, 
       null, 
       TBL.TARGET_NAME, 
       NULL, 
       NULL, 
       NULL, 
       1, 
       NULL)) as object_type1_tbl) 
     INTO l_TBL_OF_my_type 
     FROM TABLE(Source_type_TBL) TBL 
     GROUP BY TBL.TARGET_NAME; 
Смежные вопросы