Особые элементы группы T-SQL в начале возврата - PullRequest
1 голос
/ 18 октября 2011

Я вытаскиваю список сотрудников из БД, и у каждого из них есть служебный идентификатор.Я хочу сделать заказ по идентификатору офиса, но хочу, чтобы текущий офис пользователя отображался вверху списка, а остальные - внизу в порядке возрастания заказа.

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

Есть ли способсделайте это в каком-то типе предложения, или мне придется создать временную таблицу, выполнить первый поиск только по определенному офисному идентификатору, а затем добавить остальное в таблицу, где он не совпадает с этим идентификатором.Я чувствую, что это полный взлом и предпочел бы не делать этого, если не нужно.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 18 октября 2011

Вы можете использовать case в order by и, следовательно, изменить положение:

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

Вы, конечно, можете параметризовать 2 в приведенном выше

0 голосов
/ 18 октября 2011
select *
from yourTable
ORDER BY CASE
       WHEN OfficeID = 2 THEN 0
       ELSE 1
  END
, OfficeID
0 голосов
/ 18 октября 2011
select *
from yourTable
where OfficeId = 2
union all
select *
from yourTable
where OfficeId <> 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...