返回顶部的T-SQL组特定项

时间:2011-10-18 15:43:33

标签: sql-server tsql sql-server-2008

我从数据库中提取员工列表,每个人都有办公室ID。我想按办公室ID订购,但希望用户的当前办公室出现在列表的顶部,其余的按升序顺序显示在下面。

Example:

Name  Office
Mike    1
Alex    2
John    6
Steve   2
Sarah   3

If my office is office 2, I want those to appear at the top like so

Name  Office
Alex    2
Steve   2
Mike    1
Sarah   3
John    6

有没有办法在某种类型的子句中执行此操作,或者我是否必须创建临时表,仅对特定的办公室ID执行第一次搜索,然后将其余部分添加到与其不同的表中ID。我觉得这是一个完整的黑客,如果不需要,我宁愿不这样做。

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以在case中使用order by,从而改变位置:

select * 
from table
order by 
case when Office = 2 then 0 else Office end

您当然可以参数化上面的2

答案 1 :(得分:0)

select *
from yourTable
where OfficeId = 2
union all
select *
from yourTable
where OfficeId <> 2

答案 2 :(得分:0)

select *
from yourTable
ORDER BY CASE
       WHEN OfficeID = 2 THEN 0
       ELSE 1
  END
, OfficeID