Как достичь нижеприведенных критериев в SQL/plsql
У меня есть запрос, который выглядит так
Выберите n.id, n.odn_no, n.acc,
Listagg('Item ID:'|| (SELECT value FROM partner WHERE col1 = 'ABC' ) ,'|')
внутри группы( заказ по n.id, n.odn_no, n.acc ) в качестве элемента
Из main_table n GROUP BY n.id, n.odn_no, n.acc
производит результаты, как показано ниже
идентификатор товара odn_no акк
1 odn1 ac1 p1|p2
2 odn2 ac2 p2|p3|p4
3 odn4 ac3 p6|p7|p8|p9|p5|p13|p14 и так далее которые являются динамическими из результатов запроса
Теперь мне нужно было бы изменить последний элемент столбца, который ранее был значением Listagg.
теперь я должен разделить элемент столбца на Item1 Item2 Item3 и так далее в зависимости от результатов, полученных Listagg. Например, если строка имеет 10 значений, разделенных разделителем '|' для элемента столбца, то заголовки результата должны иметь Item1, Item2 , Item3 ... Item10.
Если запись имеет только 2 значения для этого поля, то она должна попасть под Item1, Item2, а остальные будут пустыми. т. е. для приведенных выше результатов я должен показать, как показано ниже
идентификатор odn_no акк место № 1 место № 2 Item3 Item4 Item5 Item6 Item7
1 odn1 ac1 p1 p2
2 odn2 ac2 p2 p3 p4
3 odn4 АС3 П6 П7 П8 П9 П5, П13, п14
Пожалуйста, помогите мне, как это сделать в Oracle Sql/plsql. Заранее спасибо.
Что я уже пробовал:
Я пробовал делать это с временной таблицей, вычисляя количество максимальных столбцов, которые может создать строка, и в зависимости от этого создавая временную таблицу, но не получая точного представления о том, как создавать и вставлять данные