2017-03-05 6 views
0

私はOracle 10gで作業しています。データのリストを返すクエリがあります。私は結果リストの順番を変更するを1つずつにする必要があります。ここに私の必要性の例である:順序変更前oracle - 結果リスト - 奇数インデックスのデータを偶数インデックスのデータと交換する

順変更後の

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

つまり

id | name 
2 | name2 
1 | name3 
4 | name4 
3 | name3 
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

うん、私は知っている、順序を設定する必要はありません、それは私のためだけだった。ここでクエリを投稿する前にorder by節を削除するのを忘れてしまった。 –

関連する問題