我有一个基于传入的不同查询(字符串)动态创建的查询。在下面,传入以生成查询的字符串是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;
此查询的结果是:
然而,我想要的结果会使列im.sequence
按此顺序排列:1,2,3,4,2,3,4(而不是显示的1,2,2,3,3,4, 4)。我的问题是,有没有一种方法可以对这些进行分组,以便它们按照明显的升序排列im.sequence
?注意:为了进一步说明,我希望操纵外部查询,我无法更改内部引用查询。任何反馈都表示赞赏!
答案 0 :(得分:1)
你可以这样做:
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;
这不会重复&#34; 1&#34;排,但它会根据你的需要对其余部分进行排序。