#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 для своих таблиц и образцов данных.