簡體   English   中英

基於先前ID字段的Oracle自定義訂單

[英]Oracle custom order based on previous id field

我有一個具有先前ID的表,並希望基於id_prev對輸出進行排序。 空值必須是第一個值。

示例圖片

id | id_prev | data
------------------
1  | 2       | foo
2  | 4       | foo
3  | 1       | foobar
4  | null    | fooo
10 | 3       | fo
8  | 10      | fo

結果

id | id_prev | sort | data
------------------
4  | null    | 1    | fooo
2  | 4       | 2    | foo
1  | 2       | 3    | foo
3  | 1       | 4    | foobar
10 | 3       | 5    | fo
8  | 10      | 6    | fo

嘗試這個:

select * from (
    select
      t.id,
      t.id_prev,
      t.data,
      row_number() over(order by t.id_prev DESC NULLS FIRST) AS sort
    from
      {your_table} t
) t order by t.sort; 

事先連接

select id,id_prev,level,data 
from TABLE_NAME
start with id_prev is null
connect by prior  id=id_prev
order by level;

試試這個Order by

Order by case when id_prev is null then 1 else 0 end desc,id_prev desc

如果要在結果中對列進行排序,則

Row_number()
     Over(Order by case when id_prev is null then 1 else 0 end desc,id_prev desc) as Sort

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM