sql 语句系列(行与列处理)[八百章之第一章]
排序时对null进行处理
比如说:
select * from EMP order by COMM
我需要对红框部分进行desc处理,也就是从大到小排列。
解析:
重点是如何让null独立出去。
select * from
(select *,case when COMM is null then 0 else 1 end as COMMISNULL from EMP )
x
order by COMMISNULL,COMM desc
解法:单独列出一列把null独立出去。
注意null的判断是 is而不是等于号
依据条件逻辑动态调整排序项
比如说:
select * from EMP
我希望的是:如果job 是SALESMAN的话,那么按照COMM排序,否则SAL 排序
解法:
在上面一个例子中,我们排行是通过排除某些行,对另外一个行进行处理。
而我们这个例子是针对列的,如果是针对列的那么更为简单。
select *
from EMP
order by case when JOB='SALESMAN' then COMM else SAL end