Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 запрос с order by  [new]
masag
Member

Откуда: Уфа
Сообщений: 550
здравствуйте!

в таблице есть символьное поле (3 символа), при выборке данных нужно сделать сортировку так, чтобы в конец выборки попадали записи у которых в этом символьном поле стоит значение 'IRR'.
По алфавиту сделать не могу, так как есть значения, например, KUP, но записи с таким значением должны стоять "выше".
Как можно решить такую задачу?
Спасибо.
4 дек 06, 15:16    [3488080]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
order by decode(pole, 'IRR', 1, 0), pole
4 дек 06, 15:18    [3488103]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
srg82
Guest
первое что пришло на ум - сделать UNION выборки где это поле не равно 'IRR' с выборкой в которой это поле равно 'IRR'
4 дек 06, 15:21    [3488127]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
Препод__
Guest
dmidek - здал
srg82 - низачОт, идет курить доку дальше
4 дек 06, 15:24    [3488150]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
Олег_Сл
Member

Откуда: Санкт-Петербург
Сообщений: 123
Мысль как у dmidek . Но в вдругой реализации. У меня скорее всего медленней.

WITH
    a AS
    (  SELECT 1  AS a_id , 'AAA' AS a_val FROM dual UNION ALL   
       SELECT 2  AS a_id , 'BBB' AS a_val FROM dual UNION ALL
       SELECT 3  AS a_id , 'CCC' AS a_val FROM dual UNION ALL
       SELECT 4  AS a_id , 'ABD' AS a_val FROM dual UNION ALL
       SELECT 5  AS a_id , 'IPP' AS a_val FROM dual UNION ALL
       SELECT 6  AS a_id , 'AAA' AS a_val FROM dual UNION ALL
       SELECT 7  AS a_id , 'KPP' AS a_val FROM dual UNION ALL
       SELECT 8  AS a_id , 'XXX' AS a_val FROM dual UNION ALL
       SELECT 9  AS a_id , 'ZZZ' AS a_val FROM dual UNION ALL
       SELECT 10 AS a_id , 'EEE' AS a_val FROM dual UNION ALL
       SELECT 11 AS a_id , 'ERE' AS a_val FROM dual UNION ALL
       SELECT 12 AS a_id , 'RRR' AS a_val FROM dual UNION ALL
       SELECT 13 AS a_id , 'YYY' AS a_val FROM dual  
       
    
    )
    
    SELECT *
     FROM A
     ORDER  BY  CASE a.a_val WHEN 'IPP' THEN 1
                             ELSE 0 
                             END      
                , a.a_val

1	AAA
6	AAA
4	ABD
2	BBB
3	CCC
10	EEE
11	ERE
7	KPP
12	RRR
8	XXX
13	YYY
9	ZZZ
5	IPP
4 дек 06, 15:26    [3488168]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Олег_Сл
Мысль как у dmidek . Но в вдругой реализации. У меня скорее всего медленней.

с каких пор CASE стал медленнее DECODE?
4 дек 06, 15:28    [3488181]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
Олег_Сл
Мысль как у dmidek . Но в вдругой реализации. У меня скорее всего медленней.



Не думаю. ИМХО с этой точки зрения все равно.
Мне просто CASE для этой задачи кажется слишком громоздким ...
4 дек 06, 15:29    [3488193]     Ответить | Цитировать Сообщить модератору
 Re: запрос с order by  [new]
masag
Member

Откуда: Уфа
Сообщений: 550
спасибо за помощь
4 дек 06, 15:34    [3488233]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить