Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 конструкция CASE в конструкции ORDER by  [new]
Apostoll
Member

Откуда:
Сообщений: 44
ORDER BY CASE WHEN 1 = 1 THEN 1 ELSE 2 END

не работает для любого запроса, а надо


что делать?



спасибо:)
26 фев 08, 18:40    [5340519]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Apostoll
что делать?
Версию поменять :) Или decode использовать.

Ну или пояснить, что значит не работает. Надеюсь в реальном примере Вы не по константе сортируете...
26 фев 08, 18:43    [5340537]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
Apostoll
спасибо:)

Пожалуйста :)
Apostoll
не работает для любого запроса, а надо

Запрос и версию сервера на всякий случай...
26 фев 08, 18:44    [5340545]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
смутные сомнения: уж не хочет ли автор так указать ордербайкляюзе позицию (в позиционной нотации) того столбца, по которому сортировать..

(если таки хочет - то зря, вне зависимости от версии сервера)
26 фев 08, 18:51    [5340584]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
=Tims=
Member [заблокирован]

Откуда:
Сообщений: 91
order by x
x - это номер колонки в выборке на выходе запроса

например
select a,b,c from d order by a,c
равносильно
select a,b,c from d order by 1,3
26 фев 08, 18:56    [5340601]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Apostoll
Member

Откуда:
Сообщений: 44
при явном указании столбца, CASE выплевывает не ссылку на поле а текст
благодаря чему не производится сортировка...имхо

надо бы как-то это обойти
ЗЫ
версия 10.1
26 фев 08, 19:02    [5340615]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18388
Apostoll
ORDER BY CASE WHEN 1 = 1 THEN 1 ELSE 2 END

не работает для любого запроса, а надо

что делать?

Если колонки одинакового типа, то
SQL> create table ane_t as select rownum a, 4+(-1)*rownum b from dual connect by level < 4;
 
Table created
 
SQL> var x number;
SQL> exec :x := 1;
 
PL/SQL procedure successfully completed
x
---------
1
 
SQL> select * from ane_t order by case :x when 1 then a when 2 then b end;
 
         A          B
---------- ----------
         1          3
         2          2
         3          1
x
---------
1
 
SQL> exec :x := 2;
 
PL/SQL procedure successfully completed
x
---------
2
 
SQL> select * from ane_t order by case :x when 1 then a when 2 then b end;
 
         A          B
---------- ----------
         3          1
         2          2
         1          3
x
---------
2
 
SQL> 
26 фев 08, 19:02    [5340620]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
Apostoll
при явном указании столбца, CASE выплевывает не ссылку на поле а текст
благодаря чему не производится сортировка...имхо

Чего-чего??? :)
26 фев 08, 19:03    [5340626]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Apostoll
при явном указании столбца, CASE выплевывает не ссылку на поле а текст
благодаря чему не производится сортировка...имхо
Чаво? :)
Вы не сильны в объяснениях, давайте лучше переходить на примеры :)
26 фев 08, 19:04    [5340629]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Apostoll
Member

Откуда:
Сообщений: 44
orawish
смутные сомнения: уж не хочет ли автор так указать ордербайкляюзе позицию (в позиционной нотации) того столбца, по которому сортировать..

(если таки хочет - то зря, вне зависимости от версии сервера)



синтаксис не важен, главное чтоб работало
26 фев 08, 19:04    [5340631]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Apostoll
orawish
смутные сомнения: уж не хочет ли автор так указать ордербайкляюзе позицию (в позиционной нотации) того столбца, по которому сортировать..

(если таки хочет - то зря, вне зависимости от версии сервера)



синтаксис не важен, главное чтоб работало

я знал, я знал..
26 фев 08, 19:05    [5340635]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
=Tims=
Member [заблокирован]

Откуда:
Сообщений: 91
на крайняк напиши функцию и по ней сортируй
26 фев 08, 19:05    [5340637]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Apostoll
синтаксис не важен, главное чтоб работало
Вот уж действительно:
пеши исчо!
26 фев 08, 19:06    [5340638]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Sergey M
Member

Откуда: г. Барнаул
Сообщений: 5462
Apostoll
ORDER BY CASE WHEN 1 = 1 THEN 1 ELSE 2 END
не работает для любого запроса, а надо
что делать?
...

обернуть в подзапрос не пойдет?

select   a.case_expr,
         a.*
    from (select B.*,
                 case
                    when 1 = 1 then 1
                    else 2
                 end as case_expr
            from dual B
           where 1 = 1) a
order by a.case_expr
27 фев 08, 06:32    [5341516]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Sergey M
обернуть в подзапрос не пойдет?
У автора не с версией проблема.
Чем это может помочь?
27 фев 08, 10:12    [5341935]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
stax..
Guest
=Tims=
на крайняк напиши функцию и по ней сортируй

зачем? вместо decode (case)?
мона пример ф-ции

зи
імхо
в екзотических случаях, когда сортировка токо через номер колонки,
не знаю как решить
и мож у автора именно етод случай
....
stax
27 фев 08, 11:06    [5342429]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
stax..
Guest
Sergey M
Apostoll
ORDER BY CASE WHEN 1 = 1 THEN 1 ELSE 2 END
не работает для любого запроса, а надо
что делать?
...

обернуть в подзапрос не пойдет?

select   a.case_expr,
         a.*
    from (select B.*,
                 case
                    when 1 = 1 then 1
                    else 2
                 end as case_expr
            from dual B
           where 1 = 1) a
order by a.case_expr

а шо даст оборот
просто после then / else надо указывать имя колонки (выражение) а не номер
.....
stax
27 фев 08, 11:25    [5342583]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18388
stax..
в екзотических случаях, когда сортировка токо через номер колонки,
не знаю как решить

DSQL
27 фев 08, 11:48    [5342808]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
stax..
Guest
andrey_anonymous
stax..
в екзотических случаях, когда сортировка токо через номер колонки,
не знаю как решить

DSQL


если чесно то я имел ввиду ораклячий случай когда order by ТОЛЬКО через номер колонки
.....
stax
27 фев 08, 11:55    [5342851]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
OraDen
Member

Откуда:
Сообщений: 828
Apostoll
ORDER BY CASE WHEN 1 = 1 THEN 1 ELSE 2 END

не работает для любого запроса, а надо


что делать?



спасибо:)
Можно извратиться так:
order by case when 1 = :psort then поле1 end, case when 2 = :psort then поле2 end
27 фев 08, 12:03    [5342914]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18388
OraDen
Можно извратиться

В очередь :)
... и не забываем об ограничениях :)

stax..
если чесно то я имел ввиду ораклячий случай когда order by ТОЛЬКО через номер колонки

Я тоже. Где смеяться?
27 фев 08, 12:16    [5343017]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
OraDen
Member

Откуда:
Сообщений: 828
andrey_anonymous
OraDen
Можно извратиться

В очередь :)
... и не забываем об ограничениях :)
А мой от вашего кое чем отличается :), какие ограничения?
27 фев 08, 12:26    [5343114]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18388
OraDen
andrey_anonymous
OraDen
Можно извратиться

В очередь :)
... и не забываем об ограничениях :)
А мой от вашего кое чем отличается :), какие ограничения?

Да, сорри, плохо смотрел, бессонная ночь сказывается :(
Пожалуй, на сегодня пора заканчивать со скулем :)
27 фев 08, 12:29    [5343134]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
OraDen
..какие ограничения?

как какие? всё те же типы данных.
SQL> with t as (select 1 n,sysdate d from dual
  2   union all select 2,sysdate-.1 from dual
  3  ) select * from t
  4  order by case when 1=1 then n else d end;
) select * from t
         *
ошибка в строке 3:
ORA-00932: несовместимые типы данных: ожидается NUMBER, получено DATE
27 фев 08, 12:41    [5343221]     Ответить | Цитировать Сообщить модератору
 Re: конструкция CASE в конструкции ORDER by  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
orawish
OraDen
..какие ограничения?

как какие? ..

упс.. и я туда же
27 фев 08, 12:43    [5343240]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить