我有这样的表:
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
因为它会先按日期排序列表。
有什么想法吗?
答案 0 :(得分:6)
准备好让你的思绪开始:你可以在case
中使用order by
:
select *
from tbl
order by
case when RefNum like 'HS%' then 1 else 0 end,
Date
SQL Server允许您几乎在任何地方使用case
- group by
,order by
,聚合函数......这是一个非常强大的工具:)
答案 1 :(得分:0)
我认为您的最终查询将是这样的:
SELECT
*
FROM
tbl1
ORDER BY
CASE
WHEN RefNum LIKE `HS%` THEN 1
ELSE 0
END
Date,
RefNum
因此,它会将整个HS%
数据发送到最后,而这些组内部将按Date
和RefNum
提供订单。