Пара значений ключа XML генерация в Oracle APEX для отчета BI Publisher - PullRequest
0 голосов
/ 29 февраля 2020

В Oracle APEX я планирую получить запрос отчета, который содержит SQL для заполнения шаблона, разработанного в BI Publisher. Мне нужен запрос, который должен генерировать вывод, который похож на XML, упомянутый ниже.

<DOCUMENT>
    <ROWSET>
      <PRIMARY_ID>10</PRIMARY_ID>
      <KEY_VALUE>
        <Key>Apple</Key>
        <Value>2</Value>
      </KEY_VALUE>
    </ROWSET>
    <ROWSET>
       <PRIMARY_ID>20</PRIMARY_ID>
       <KEY_VALUE>
        <Key>Orange</Key>
        <Value>5</Value>
       </KEY_VALUE>
    </ROWSET>
</DOCUMENT>

Обратите внимание, что этот запрос будет помещен в раздел «Запрос отчета» Oracle APEX 5.1 версия.

В настоящее время я смог написать запрос SQL, который может генерировать XML, как показано ниже. Разница в том, что нет НИКАКОГО тега «KEY_VALUE», содержащего «Ключ» и «Значение».

<DOCUMENT>
    <ROWSET>
      <PRIMARY_ID>10</PRIMARY_ID>
      <Key>Apple</Key>
      <Value>2</Value>
    </ROWSET>
    <ROWSET>
       <PRIMARY_ID>20</PRIMARY_ID>
       <Key>Orange</Key>
       <Value>5</Value>
    </ROWSET>
</DOCUMENT>

Это запрос, который я получил.

SELECT 
    distinct v.id id,
    (Select 'Status' from dual)  "KEY",
    (Select v.status from dual)  "Value"
FROM
    .......

1 Ответ

0 голосов
/ 24 марта 2020

Наконец, я смог придумать Запрос, который генерирует ожидаемый результат (я уверен, что может быть лучший способ, но с временными рамками, которые у меня были, это лучшее, что я мог придумать с помощью, может быть, мы сможем найти некоторые лучшие решения в этом посте.)

Я создал представление с помощью этого SQL запроса ниже и использовал это представление в Oracle APEX BI издатель.

Select * from 
    (SELECT PRIMARY_ID, 'Apple' as Key, item_count as value
     FROM xxc_test where item_id = 45
     UNION
     SELECT PRIMARY_ID, 'Orange' as Key, item_count as value
     FROM xxc_test where item_id = 46
     UNION
     SELECT PRIMARY_ID, 'Grapes' as Key, item_count as value
     FROM xxc_test where item_id = 47);
...