oracle - 结果列表 - 奇数索引处的数据与偶数索引处的数据交换

时间:2017-03-05 06:24:50

标签: sql oracle oracle10g

我正在使用oracle 10g,我有一个返回数据列表的查询。我需要逐个更改结果列表的顺序。以下是我需要的一个例子:

订单更改前

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 个答案:

答案 0 :(得分: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)