Вероятно, есть способ сделать агрегацию списка в xquery, но я не эксперт в этом, и это насколько я могу получить
select *
from
xmltable( '$doc/persons/person' passing
XMLPARSE(DOCUMENT '<persons>
<person><name>BLA1</name><parameters>
<param><key>KKK1</key><value>VVV1</value></param>
<param><key>KKK2</key><value>VVV2</value></param></parameters></person>
<person><name>BLA2</name><parameters>
<param><key>KKK21</key><value>VVV21</value></param>
<param><key>KKK22</key><value>VVV22</value></param>
<param><key>KKK23</key><value>VVV23</value></param></parameters></person></persons>') as "doc"
COLUMNS "NAME" VARCHAR(64) PATH './name'
, "PARAMS" VARCHAR(64) PATH 'fn:string-join(./parameters/param/key,";")'
, "VALUES" VARCHAR(64) PATH 'fn:string-join(./parameters/param/value,";")'
) as x
возвращает
NAME PARAMS VALUES
---- ----------------- -----------------
BLA1 KKK1;KKK2 VVV1;VVV2
BLA2 KKK21;KKK22;KKK23 VVV21;VVV22;VVV23
Я не уверен, как объединить ПАРАМЕТРЫ и ЗНАЧЕНИЯ в один столбец в xquery