Oracle SQL: ошибка не в функции группы с одной группой

#oracle

#Oracle

Вопрос:

Я получаю ошибку » нет функции группы с одной группой. Следуя документации, у меня есть группа по столбцу, который не согласован в инструкции select, но не работает.

 SELECT  XMLELEMENT(  "CLASIFICATION",  XMLATTRIBUTES(vm.value As "name"),  XMLAgg(  XMLElement(  "GRUP",  XMLATTRIBUTES(c.description_group As "name"),  XMLAgg(  XMLElement(  "CLAUSE",  XMLATTRIBUTES(cla.description_clause As "name")  )  )  )  )  ) FROM  dbo.clause cla,  dbo.clause_group c,  dbo.values vm where  vm.table_name = 'CLAUSE_TYPES'  and c.code = vm.code  and cla.id_group = c.id_group GROUP BY vm.value  

Ответ №1:

Вместо того, чтобы пытаться использовать две функции агрегирования, одна из которых вложена в другую, используйте подзапрос:

 SELECT XMLELEMENT(  "CLASIFICATION",  XMLATTRIBUTES(value As "name"),  XMLAgg(  XMLElement(  "GRUP",  XMLATTRIBUTES(description_group As "name"),  clauses  )  )  ) FROM (  SELECT vm.value,  c.description_group,  XMLAgg(  XMLElement(  "CLAUSE",  XMLATTRIBUTES(cla.description_clause As "name")  )  ) AS clauses  FROM dbo.clause cla  INNER JOIN dbo.clause_group c  ON cla.id_group = c.id_group  INNER JOIN dbo.values vm  ON c.code = vm.code  WHERE vm.table_name = 'CLAUSE_TYPES'  GROUP BY vm.value,  c.description_group ) GROUP BY value  

Примечание: это непроверено, поскольку вы не предоставили инструкции DDL/DML для своих таблиц и образцов данных.