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())的 【降序】方式,实现 日期的升序排列。

时间: 2024-08-03 03:56:19

sqlserver复杂排序(order by case when)的相关文章

Oracle order by case when 多条件排序

ORACLE sql 排序 根据两个条件排序,根据id号由小到大排序,同时country字段是北京的排最前面前面,其次上海,..大连,最后是其他城市,怎么写? 写法如下:select * from proviceorder by (case when country='北京' then 0 when country='上海' then 1 when country='广东' then 2 when country='深圳' then 3 when country='杭州' then 4 when

sqlserver之排序规则和ETL不支持sqlserverdatetime2的问题

sqlserver的排序规则大概分为Windows 排序规则和 SQL Server 排序规则.数据在安装的时候,默认不设置会默认为SQL_Latin1_General_CP1_CI_AI.数据库在创建的时候,如果不设定会使用数据默认的排序规则,此外,还可以对表中的列设定排序规则. 这里只是记录一下最近遇到这类问题时的一些注意事项. 首先SQL_Latin1_General_CP1_CI_AI对应的1252,而Chinese_PRC_CI_AS对应gbk的936.如果要正确的保存中文,则需要在建

Mysql 分别按月, 日为组group,进行统计排序order

在数据库中我们经常用sql语句对表进行简单的统计排序,对于日期字段,我们可以简单的对其进行order.对于复杂一点的可以按日期中的年,月,日分别进行group,order. 按年份进行group,统计排序: SELECT YERA(established_time) ,COUNT(*) AS num <span style="font-size: 13.75px; font-family: Arial, Helvetica, sans-serif;">FROM `table

hive 排序 order by sort by distribute by cluster by

order by: order by是全局排序,受hive.mapred.mode的影响. 使用orderby有一些限制: 1.在严格模式下(hive.mapred.mode=strict),orderby必须跟limit一起使用(?). 原因:在执行orderby时,hive使用一个reducer,如果查询结果量很大,这个reducer执行起来会很费劲,所以必须要限制查询输出结果的数量. limit n 之后,reducer处理的数据有n * count(map)条数据. 2.在非严格模式下(

mysql 数据操作 单表查询 查询排序: order by

如果不指定排序 默认是按照id字段 从小到大排序的  升序 mysql> select * from employee; +----+------------+--------+-----+------------+-----------+--------------+------------+--------+-----------+ | id | name | sex | age | hire_date | post | post_comment | salary | office | de

排序 order by 的用法

order by  跟在select* from 后面 order by 默认的是升序, asc 升序  desc 降序 select * from 表名 order by  字段名  asc 在带有过滤条件的情况下, 跟在where后面 select * from A where  Age>23 order by Salary desc

《SQL 进阶教程》 case:练习题1-1-3 用 ORDER BY 指定顺序进行排序

select name from greatestsORDER BY case when name ='B' then 1 when name ='A' then 2 when name ='D' then 3 when name ='C' then 4 else 5 end 原文地址:https://www.cnblogs.com/newlangwen/p/10565919.html

空值排序(oracle/sqlserver)

oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 改变空值办法: (1)用nvl函数或decode函数将null转换为一特定值 替换null: nvl(arg,value) (2)用case语法将null转换为一特定值(oracle9i以后版本支持.和sqlserver类似): order by (case mycol when null then‘北京漂客’else mycol end) (3)使用nulls first 或

sqlserver、oracle数据库排序空值null问题解决办法

转:https://www.cnblogs.com/pacer/archive/2010/03/02/1676371.html [sqlserver]: sqlserver 认为 null 最小. 升序排列:null 值默认排在最前. 要想排后面,则:order by case when col is null then 1 else 0 end ,col 降序排列:null 值默认排在最后. 要想排在前面,则:order   by case when col is null then 0 el