当前位置: 代码迷 >> Oracle技术 >> row_number()排序中是不是可以添加where条件
  详细解决方案

row_number()排序中是不是可以添加where条件

热度:372   发布时间:2016-04-24 08:25:02.0
row_number()排序中是否可以添加where条件
RT,举例来说,我有一张表,两个字段, 省份、用户数,其中省份字段包括 吉林、辽宁、黑龙江等省份,同时还包括了南21省、北方十省和全国,现在我要保留表的所有信息,同时对非南21、北十和全国的数据做row_number,如何实现?最终实现类似于: 省份 用户数 排名
  全国 20  
  北十 12  
  南21 8  
  北京 4 1
  天津 3 2
  广东 2 3这种形式数据。

------解决方案--------------------
SQL code
   SELECT t.*,          CASE WHEN t.s IN ('全国', '北十', '南21') THEN NULL              ELSE ROW_NUMBER() OVER(PARTITION BY CASE WHEN t.s IN ('全国','北十','南21') THEN NULL ELSE 1 END ORDER BY t.rs DESC)          END     FROM t     ORDER BY 2 DESC,3 NULLS FIRST
  相关解决方案