sqlserver复杂排序(order by case when)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver复杂排序(order by case when)相关的知识,希望对你有一定的参考价值。

 /*
表 sysid自增主键  scro分数  oper操作时间
scro分数 > 5的按照  分数 降序, 分数小于等于5的按照 操作时间 升序; >5 的排在 《=5的前面
*/
select * from test order by case when scro > 5 then 1 else 0 end desc, case when scro > 5 then scro elseDATEDIFF(MINUTE,oper,GETDATE()) end desc
--  第一个case 把 》5 和《=5整体,排序,第二个则  为了满足 (分数小于等于5的按照 操作时间 升序)条件不可能是   同一个级别的一个升序一个降序,所以通过 DATEDIFF(MINUTE,oper,GETDATE())的 【降序】方式,实现 日期的升序排列。

 



以上是关于sqlserver复杂排序(order by case when)的主要内容,如果未能解决你的问题,请参考以下文章

UNION ALL - ORDER BY,排序

sqlserver-order by offset fetch

求sqlserver join 后order by 速度慢的解决办法

sql里的排序倒序的命令是order by啥

oracle中在in子查询语句中order by排序能否用?

SQL 分页查询存储过程中order by 后面不能传变量的问题怎么解决