如何在SQL中首先显示一系列数值?

时间:2015-02-03 16:59:44

标签: sql sql-server sql-order-by

我如何安排这个以便它仍然按时间排序,但是还会首先显示10岁以下的任何ID?

Time  |   ID
9:15  |   1
9:20  |   5
9:25  |   12
9:30  |   3
9:35  |   26
9:40  |   22
9:45  |   15

这可以通过""来实现。码?或者我还需要其他东西吗?

我正在使用Microsoft SQL Server 2012。

编辑:这是我希望的输出:

Time  |   ID
9:15  |   1
9:20  |   5
9:30  |   3   
9:25  |   12
9:35  |   26
9:40  |   22
9:45  |   15

ID 12和3将被切换。所以优先考虑的是身份证编号那么。

2 个答案:

答案 0 :(得分:3)

使用此自定义排序

SELECT *
FROM   Yourtable
ORDER  BY CASE
            WHEN id <= 10 THEN id
            ELSE 11-- Just a number greater then 10 to keep the id>10 after id<=10
          END ASC,
          time 

演示

架构设置

create table #tts(Time  time,   ID int)
insert #tts values
('9:00' ,21 )
('9:15' ,1 ),
('9:20' ,5  ),
('9:25' ,12),
('9:30' ,3  ),
('9:35' ,26),
('9:40' ,22),
('9:45' ,15)

查询

SELECT *
FROM   #tts
ORDER  BY CASE
            WHEN id <= 10 THEN id
            ELSE 11
          END ASC,
          time 

答案 1 :(得分:1)

使用ORDER BY的嵌套查询也可以,但最终会得到第3列:

SELECT t.* FROM
( SELECT Time
        ,ID
        ,CASE WHEN ID < 10 THEN 1 ELSE 2 END AS 'ColOrder'
  FROM YourTable) as t
ORDER BY t.ColOrder, t.Time