2013-09-29 6 views
0

У меня есть следующий запрос:SQL упорядочить по абсолютным значениям

select 'junior' as type, value 
from mytable 
union 
select 'intermediate' as type, value 
from mytable 
union 
select 'senior' as type, value 
from mytable 

который возвращает следующие данные:

type   value 

Intermediate  10  
Junior   5 
Senior   1 

мне просто нужно, чтобы изменить порядок его так выглядит эта

Junior   5 
Intermediate 10   
Senior   1 

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

ответ

1

Вам нужно добавить третий столбец, названный, например, Порядок сортировки. Затем назначить правильное целочисленное значение к нему,

select 'junior' as type, value, 1 as sortorder 
from mytable 
union 
select 'intermediate' as type, value, 2 as sortorder 
from mytable 
union 
select 'senior' as type, value, 3 as sortorder 
from mytable 
order by 3 
+0

Самый простой ответ, спасибо всем – Jamesla

2

Я не знаю, если вы хорошо поняли, но я бы извлек еще одну колонку, например. «последовательность» с целыми значениями. Это обеспечит возможность применения индивидуального заказа.

В качестве примера:

select results.type, results.value, results.sequence 
from ( 
    select 'junior' as type, value, 0 as sequence 
    from mytable 
    union 
    select 'intermediate' as type, value, 1 as sequence 
    from mytable 
    union 
    select 'senior' as type, value, 2 as sequence 
    from mytable 
) as results order by results.sequence 
2

Вы можете сортировать, добавив столбец ключа сортировки или добавить простое заявление случая на основе значений.

-- Sort with Case statement 
with sourceData as 
(
    select 'junior' type, 5 value 
    union all 
    select 'intermediate' type, 10 value 
    union all 
    select 'senior' type, 1 value 
) 
select * 
from sourceData 
order by 
    case type 
    when 'junior' then 0 
    when 'intermediate' then 1 
    when 'senior' then 2 
    else null 
    end 

SQL Fiddle для тестирования.

0

Попробуйте этот.

выбрать тип, значение из ( выбрать тип, значение, ROW_NUMBER() над (по типу того, как) из Ровно #mytable союза выбрать тип, значение, row_number() над (по типу того, как) Ровно из #mytable союза выберите тип, значение, row_number() по (порядка по типу) в Ровно от #mytable ) постановление от 2 убыв

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