Oracle SQL - группировка по отдельным столбцам - PullRequest
0 голосов
/ 15 мая 2018

У меня есть запрос, который создается динамически на основе другого запроса (строки), который передается. В приведенной ниже строке, передаваемой для генерации запроса, указывается параметр dbms_xmlgen.get_xmltype (цитируемый запрос не имеет отношения к ответу на вопрос, я ищу изменить внешний запрос)

SELECT s.value AS "value"
         ,im.sequence AS "sequence"
         ,lookup_detail_lib.get_type_value_message AS "prefix"
         ,lookup_detail_lib.get_type_value_message AS "suffix"
         ,im.field AS "field"
    FROM xmltable('for $i in ./ROWSET/ROW/* return $i' passing
                  dbms_xmlgen.getxmltype('SELECT blah blah this generates a clob') columns
                  column_name VARCHAR2(100) path 'local-name()'
                 ,VALUE CLOB path 'text()') s
        ,info_metadata im
        ,task t
        ,job j
   WHERE im.column_name = s.column_name
     AND im.job_type = j.job_type
     AND j.job_id = t.job_id
     AND NVL(im.task_type, t.task_type) = t.task_type
     AND t.task_id = 13580
   ORDER BY im.sequence;

Результат этого запроса:

enter image description here

Однако мой желаемый результат поместил бы столбец im.sequence в следующем порядке: 1,2,3,4,2,3,4 (вместо показанного 1,2,2,3,3,4,4) , У меня вопрос, могу ли я как-то сгруппировать их так, чтобы они были в порядке различного возрастания im.sequence? Примечание: для дальнейшего разъяснения я хочу манипулировать внешним запросом, я не могу изменить внутренний запрос в кавычках. Любые отзывы приветствуются!

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете сделать:

with t as (
      <your query here>
     )
select t.*
from (select t.*,
             row_number() over (partition by sequence order by sequence) as seqnum
      from t
     ) t
order by sequence;

Это не дублирует строку "1", но сортирует остальное по вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...