当前位置: 代码迷 >> Oracle管理 >> 二次排序SQL咨询解决方法
  详细解决方案

二次排序SQL咨询解决方法

热度:199   发布时间:2016-04-24 04:08:25.0
二次排序SQL咨询
字段value| order1| order2,
分组组内排序需求,有什么办法实现这样的要求,一次排序从大到小即order1,二次排序从某个开始排序,其他的不参与排序即order2(不是过滤是某些不参与排序)
40  1
30  2
20  3  1
10  4  2
..
------解决思路----------------------
引用:
..



select tt1.value,tt1.rn1,tt2.rn2 from
(select value,row_number()over(order by value desc) rn1 from t1) tt1,
(select value,row_number()over(order by value desc) rn2 from t1 where value<=2) tt2
where tt1.value=tt2.value(+)
order by tt1.value desc

------解决思路----------------------
作业题还是什么?只要这个格式就行吗?
with T AS (
select value,row_number()over(order by value desc) rn from t1
)--前两个不参与第二次排序,两次排序方式一样就不需要在执行一次排序了,数据处理下就行了
SELECT  VALUE,RN RN1,(CASE WHEN RN<=2 THEN NULL ELSE RN-2 END) RN2
FROM T
order by value desc
  相关解决方案