ORACLE 按条件排序的例子技巧

本文介绍了一种在Oracle数据库中实现特定排序需求的方法。该方法通过CASE语句为不同条件的记录分配优先级,确保了当天约会的案件排在最前,然后是从未处理过的案件,最后按上次处理时间排序。

   刚看了一篇关于ORACLE按条件排序的例子 的blog,发现对以后的业务有帮助,特注意一下:

     需求: 当天约会的案件在最前面--> 从未处理过的案件--> 上次处理时间由小到大排序(即越近催收的案件在越后面)

      即:(col_case.case_app_date=sysdate)-->(col_case.case_lst_col_date is null)-->(col_case.case_lst_col_date)

  SELECT
  
CASE
    
WHEN  TRUNC(t.case_app_date) = TRUNC(sysdate)
    
THEN   ' 1 '
    
WHEN  t.case_lst_col_date_str  IS   NULL
    
THEN   ' 2 '
    
ELSE   ' 3 '
  
END   AS  column1,
  t.
*
   
FROM
  (
SELECT  V_COLOVERVIEW_FULL. *
     
FROM  V_COLOVERVIEW_FULL
    
WHERE  MCOL_ID      = ' zhangq '
  
OR (AGENT_ID          = ' zhangq '
  
AND  AGENT_STATUS     = ' AgentStatus_Agree '
  
AND  AGENT_DATE_FROM <= SYSDATE
  
AND  AGENT_DATE_TO   >= SYSDATE)
  ) t
ORDER   BY  column1,
  case_lst_col_date_str 
ASC

 

   注明:

      这里的排序技巧,主要是在case上做了一个判断。来保证数据排序的正确性。


 

转载于:https://www.cnblogs.com/zping/archive/2008/10/19/1314689.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值