.NET- India Ответов: 2

Получение результата динамически из поворота или разворота с XML в Oracle


Привет,

Я хочу получить данные с помощью Стержень динамически, но не в состоянии получить, если это возможно, то, пожалуйста, дайте мне знать, что я посылаю свой запрос здесь ниже

SELECT * FROM(
                SELECT ROW_NUMBER() OVER (PARTITION BY IAI_COVERNUMBER,IAI_VERNO ORDER BY IAI_COVERNUMBER) AS RNO, IAI_COVERNUMBER AS INSGRP 
                FROM IAI_ACTUALINSURERS INNER JOIN PLY_POLICY ON  (IAI_COVERNUMBER=PLY_COVERNUMBER AND IAI_VERNO=PLY_VERNO)
                WHERE IAI_COVERNUMBER in ('0011520','0010891') 
                
            ) PIVOT (MIN(INSGRP)--,MIN(IAI_INSPROPORTION) AS INSPROP              
              FOR RNO IN (1,2,3,4,5));


вот я и сел РНО жестко закодировано, но я хочу, чтобы количество строк существовало
SELECT ROW_NUMBER() OVER (PARTITION BY IAI_COVERNUMBER,IAI_VERNO ORDER BY IAI_COVERNUMBER) AS RNO



Но я также использую Pivot XML но это дает мне выход в XML жало в одну колонну
&ЛТ;PivotSet&ГТ;&ГТ;деталь&ГТ;&ЛТ;столбце имя РНО= &ГТ;1&ЛТ;/колонки&ГТ;&ЛТ;колонка имя = INSGRP&ГТ;BAGIC-В02-100-OG08190133030000052&ЛТ;/колонки&ГТ;&ЛТ;/п&ГТ;&ЛТ;товар&ГТ;&ЛТ;колонка имя = РНО и GT;2&ЛТ;/колонки&ГТ;&ЛТ;колонка имя = INSGRP&ГТ;&ЛТ;/колонки&ГТ;&ЛТ;/п&ГТ;&ЛТ;/PivotSet&ГТ;&ЛТ;/а&ГТ;&ЛТ;/б&ГТ;

но я хочу ... INSGRP значения в количестве столбцов, как указано выше, что даст нам 2 столбца.... это может быть больше, чем 2 столбца


Пожалуйста, предоставьте решение, если у кого-то есть лицо или знаете решение.

Что я уже пробовал:

выше я уже упоминал все, что хочу и пробовал

2 Ответов

Рейтинг:
0

Wendelius

Не уверен, что я полностью понимаю ваш вопрос, но если вы имеете в виду, что хотите иметь динамическое количество столбцов в предложении PIVOT, то вам нужно построить оператор SQL динамически.

Другими словами в зависимости от ситуации если вам нужно иметь

PIVOT (MIN(INSGRP) FOR RNO IN (1,2,3,4,5));
или
PIVOT (MIN(INSGRP) FOR RNO IN (1,2,3,4,5,6,7,8,9));
или
PIVOT (MIN(INSGRP) FOR RNO IN (1,2,3));

Вам нужны разные операторы SQL, так как Поворот не поддерживает динамические значения. Видеть Спросите Тома "можно ли использовать динамический запрос в PIVOT в cl..."[^]
Но если вы используете Pivot XML, то вы можете использовать подзапрос для столбцов. Для примера взгляните на Динамический pivot в oracle sql - переполнение стека[^]


Рейтинг:
0

Member 14930933

Я немного шокирован тем, что в интернете больше нет ответов на эту головоломку.

PIVOT XML довольно бесполезен, если вы не можете преобразовать строку XMLTYPE в отдельные столбцы, как это можно сделать с помощью обычного pivot. Я думаю, что именно этот вопрос задает оригинальный плакат.