2012-01-30 78 views
2

我有2日期列的表格:ORDER BY不同的列在相同的優先級

create_datemodify_date
create_date有時會設置爲modify_date

現在我想訂購我的查詢,他們都具有相同的優先級。

如果我這樣做:

order by create_date desc, modify_date desc 

我第一次得到所有行通過create_date排序,然後通過modify_date但我想無論是在相同的優先級排序的列。我需要這樣的:

create_date | modify_date 
2011-12-31 | - 
2011-12-01 | 2011-12-30 
2011-12-29 | - 

回答

5
select * 
from yourtable 
order by coalesce(modify_date, create_date) desc 
3

使用ISNULL()通過modify_date訂購,如果modify_dateNULL,它將使用create_date值:

ORDER BY ISNULL(modify_date, create_date) DESC 
0

列命名意味着modify_date是要麼不設置或更高,然後創建日期,所以其他答案將工作。如果不是,您可以使用here中描述的用戶定義函數(調整爲使用日期而不是int)。然後用

ORDER BY dbo.HigherArgument(create_date, modify_date) DESC 
相關問題