我有这样的表:

RefNum         Date        Status
----------------------------------
20276       12/7/2014     Approved
56332       13/7/2014     Approved
HS785       11/7/2014     Approved
52355       10/7/2014     Approved
HS566       15/7/2014     Approved


我需要按date列对其进行排序。但棘手的是,我还需要将以'HS'开头的refnum置于按日期排序的结果的底部。

所以结果应该是这样的

RefNum         Date        Status
----------------------------------
52355       10/7/2014     Approved
20276       12/7/2014     Approved
56332       13/7/2014     Approved
HS785       11/7/2014     Approved
HS566       15/7/2014     Approved


我绝对不能这样

SELECT *
FROM tbl1
ORDER BY Date, RefNum


因为它将首先返回按日期排序的列表。

有任何想法吗?

最佳答案

准备振作起来:您可以在case中使用order by

select *
from tbl
order by
    case when RefNum like 'HS%' then 1 else 0 end,
    Date


SQL Server允许您几乎在任何地方使用case-group byorder by,聚合函数...这是一个非常强大的工具:)

关于sql - 棘手的按2个不同的列排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29005631/

10-11 17:11