2011-10-18 11 views
1

私はdbから従業員のリストを取得しており、それぞれオフィスIDを持っています。私はオフィスIDで注文したいが、ユーザーの現在のオフィスがリストの一番上に表示され、残りが下から順に表示されるようにしたい。返品の先頭にあるT-SQLグループ固有のアイテム

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と同じです。私はそれが完全なハックのように感じ、必要がない場合はそれをしたくないと思う。

ありがとうございます!

答えて

4

あなたはorder bycaseを使用するため、位置を変更することができます

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

あなたは、もちろん、上記

0
select * 
from yourTable 
where OfficeId = 2 
union all 
select * 
from yourTable 
where OfficeId <> 2 
0
select * 
from yourTable 
ORDER BY CASE 
     WHEN OfficeID = 2 THEN 0 
     ELSE 1 
    END 
, OfficeID 
2をパラメータ化でき
関連する問題