2017-03-05 82 views
0

我正在使用oracle 10g,並且我有一個返回數據列表的查詢。我需要更改結果列表的順序,逐個。下面是我需要一個例子:爲了改變之前oracle - 結果列表 - 奇數索引與偶數索引處的數據交換

:我想在交換數據

id | name 
2 | name2 
1 | name3 
4 | name4 
3 | name3 
5 | name5 

在換句話說,

id | name 
1 | name1 
2 | name2 
3 | name3 
4 | name4 
5 | name5 

順序變化之後的奇數指數與數據在均勻指數。有這樣的工作有任何指令嗎?

回答

1

我認爲,簡單的方法是使用解析函數row_number

select * 
    from (select id, name, row_number() over(order by id) rn 
      from (select level id, 'name' || level name 
        from dual 
        connect by level <= 20) 
      order by rn) 
    order by decode(mod(rn, 2), 0, rn - 2, rn) 
+0

爲什麼你需要通過RN在子查詢訂購? – mathguy

+0

是的,我知道,沒有必要設置順序,它只是爲了我。在發佈查詢之前,我忘了刪除按條款的順序。 –