[英]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.