2016-08-12 5 views
0

У меня есть данные в моей базе данных, как это:
0 1 2 1 0 3 и я хочу, чтобы отсортировать его по возрастанию, и первый отчет должен быть 1 не 0. Я хочу, чтобы выход, как это:
1 1 2 3 0 0.
Пожалуйста, помогите мне? У меня есть хранимая процедура, как это:Arrange сортировка типа КУС в хранимой процедуре

select * from table order by number ascending 

и выход 0 0 1 1 2 3

кто?

ответ

4
select * from table order by CASE WHEN id = 0 THEN 999999 ELSE id END 

Это просто меняет порядок сортировки и легко расширяемой, если вы хотите, чтобы добавить дополнительные поля.

+0

yah it works. спасибо вам :) – Muj

+0

приятный хак ... Однако следите, чтобы в вашем столе не было числа, чем «THEN 999999» –

1

Это должно быть просто. Вы можете выбрать дважды с условием и использовать объединение всех.

select * into #temp from table where id <> 0 order by id 

select * from #temp 
union all 
select * from table where id = 0 
+0

union все не работает, если есть заказ по ключевому слову/синтаксису – Muj

+0

Вы можете скопировать эти данные в таблицу temp, а затем выполнить объединение всех –

+0

благодаря вашей помощи. он работает, но я должен пойти на более короткий. хе-хе. – Muj

Смежные вопросы