oracle 同一字段不同状态分别排序问题

#对于同一字段按照不同状态分别排序
在很多查询下我们可能遇到这样的需求,需要根据一个字段不同的状态排序。比如现有一张表 t_test 。这张表有id,is_complete,update_time,desc字段。其中is_complete 字段关联一张字典表,状态分别为(0 未办结; 1 已办结;), 我们需要对已办结和未办结分别排序。即如果是已办结状态,则按照update_time(日期类型)倒序排列,如果是未办结状态则按照update_time(日期类型)正序排列。办结状态按照正序排列。那么 我们可以通过虚拟两个字段解决。

  select id,is_complete,update_time,desc
  case when is_complete=0  then update_time
  else to_date('2099-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
  end  as sortAsc,
  case when is_complete=1  then update_time
  else to_date('1900-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
  end  as sortDesc
   from
   t_test
order by sortAsc asc,sortDesc desc;

就是虚拟了两个字段 sortAsc, sortDesc。
当然也可以通过java代码处理,但更多的时候牵扯到分页问题,使用sql解决是不是更方便一些。
更多数据库有趣sql用法,欢迎讨论。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值