我有这样的表:
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
因为它将首先返回按日期排序的列表。
有什么想法吗?
最佳答案
准备好大吃一惊:您可以在 order by
中使用 case
:
select *
from tbl
order by
case when RefNum like 'HS%' then 1 else 0 end,
Date
SQL Server 允许您几乎在任何地方使用case
- group by
、order by
、聚合函数……这是一个非常强大的工具:)
关于sql - 按 2 个不同的列进行棘手的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005631/