oracle中用case when查询列表


查询sql语句如下

SELECT * FROM (
SELECT *
,ROW_NUMBER() OVER ( PARTITION BY scene_code ORDER BY (CASE status when 'DRAFT' then 3 when 'PRE' then 5 when 'GRAY' then 7 when 'PROD' then 9 END) DESC ) AS rank_id
FROM fus_recom_config
WHERE status in ('DRAFT','PRE','GRAY','PROD')
) a
WHERE a.rank_id=1
ORDER BY a.gmt_modified DESC
LIMIT 0,200

查询结果为 当scene_Code相同时,会按status(PROD>GRAY>PRE>DRAFT)返回最高状态的一条数据,不会同时出现scene_Code相同的多条数据


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM