统计sql语句改造 (当sign_date不为空时,用sign_date升序排列,当sign_date为空时, 用issu_date升序排列)

select * from (

select '2011-09-14' as sign_date,'2011-09-01' as issu_date

union

select '2011-09-10' as sign_date,'2011-09-05' as issu_date

union

select '2011-09-12' as sign_date,'2011-09-02' as issu_date

union

select '' as sign_date,'2011-09-04' as issu_date

union

select '' as sign_date,'2011-09-05' as issu_date

) a 

order by sign_date ,issu_date

 结果:

结果出来后,发现第一列数据总是空排在前面, 所以在原有的基础上构造NULL让其参与排序。

统计sql语句改造 (当sign_date不为空时,用sign_date升序排列,当sign_date为空时, 用issu_date升序排列)

select case when sign_date='' then'NULL' else sign_date end sign_date,issu_date from (

select '2011-09-14' as sign_date,'2011-09-01' as issu_date

union

select '2011-09-10' as sign_date,'2011-09-05' as issu_date

union

select '2011-09-12' as sign_date,'2011-09-02' as issu_date

union

select '' as sign_date,'2011-09-04' as issu_date

union

select '' as sign_date,'2011-09-05' as issu_date

) a 

order by sign_date ,issu_date

结果:

统计sql语句改造 (当sign_date不为空时,用sign_date升序排列,当sign_date为空时, 用issu_date升序排列)

你可能感兴趣的:(sql语句)