2012-01-30 66 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 
相关问题