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

Откуда:
Сообщений: 81
Если дата приведена к формату to_char(date_n,'dd.mm.yyyy') date_n, то не выполняется сортировка order by date_n. Почему?
16 июн 14, 14:45    [16169743]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
.
Guest
Функция,

потому что это не дата
16 июн 14, 14:48    [16169763]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
пыщ-пыщ-пыщ
Guest
Функция,

потому что это уже не дата, а строка
16 июн 14, 14:48    [16169767]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
пыщ-пыщ-пыщ,

Как же тогда отсортировать?
16 июн 14, 14:50    [16169783]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
.
Guest
Функция
пыщ-пыщ-пыщ,

Как же тогда отсортировать?


select to_char(date_n,'dd.mm.yyyy') date_c from table order by date_n
16 июн 14, 14:52    [16169805]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
Запрос возвращает диапазон данных
17 июн 14, 06:00    [16173045]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Добрый Э - Эх
Guest
Функция
пыщ-пыщ-пыщ,

Как же тогда отсортировать?
по исходному значению поля таблицы. для этого либо алиас преобразованного в строку столбца делаешь отличным от Date_n, либо в в кляузе order by уточняешь имя столбца именем таблицы.
17 июн 14, 06:24    [16173053]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
Добрый Э - Эх,

Не совсем понятно. Запрос состоит из объединения двух запросов. И по этому объединению нужно сделать сортировку по дате. В order by прописываю алиас выборки дат первого запроса. Если дата не преобразована то все нормально получается.
17 июн 14, 07:04    [16173070]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Добрый Э - Эх
Guest
Функция, особое внимание на выделенные кусочки кода:
with
  "Первый Запрос" as (select level as id, level + (sysdate - 20) as dt
                       from dual connect by level <= 10
                     ),
  "Второй Запрос" as (select level as id, dbms_random.string(null,10) as str
                       from dual connect by level <= 10
                     )

select /**/
       to_char(q1.dt,'dd.mm.yyyy') as dt
      , q2.str
  from "Первый Запрос" q1
  join "Второй Запрос" q2
    on q1.id = q2.id
  order by q1.dt

если в order by просто указать dt, без имени источника данных (таблица, вью, подзапрос), то сортировка будет проходит по соответствующему алиасу из селект-листа запроса, то есть по факту - по преобразованному в TO_CHAR значению поля DT.
Вот я и говорю - ты или добавь к date_n в order by уточнение именем таблицы (представления, подзапроса), либо в селект-листе своего запроса выражению to_char(date_n,'dd.mm.yyyy') присваивай отличный от date_n алиас. date_c, например, как тебе посоветовал "точка" парой постов выше...
17 июн 14, 07:25    [16173089]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
Добрый Э - Эх,

select
...
,to_char(duty.date_i,'dd.mm.yyyy') date_n
...

from
table1 duty
...


where
...


union

select
...
,to_char(pay.date_plat,'dd.mm.yyyy') date_op
...

from
table2 pay
...

where
...

order by date_n



Если сортировку выполняю по алиасу первого запроса, то выполняется не верно, так как я преобразовала дату в строку. Order by duty.date_i прописать не могу, так как ругается что неизвестный идентификатор. Покажите, пожалуйста, на моем примере как нужно правильно сделать.
17 июн 14, 07:35    [16173109]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Z00m
Member

Откуда:
Сообщений: 29
Функция, с вашим примером как-то так например

select
...
,to_char(duty.date_n,'dd.mm.yyyy') date_n
,duty.date_n   date_sort
... 

from
table1 duty
...
where
...
union
select
...
,to_char(pay.date_plat,'dd.mm.yyyy') date_n
pay.date_plat date_sort
...
from
table2 pay
... 
where
...
order by date_sort
17 июн 14, 07:59    [16173128]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
_TempFox_
Member

Откуда: из норы
Сообщений: 33
А так работает?
select * from
  (select ..., date_i as dt1
   from ...

   union

   select ..., date_op
   from ...
  )
order by dt1
17 июн 14, 08:02    [16173137]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Добрый Э - Эх
Guest
Что мешает в запросе оставить как исходное поле с датой, так и преобразованное к строке значение? Сортировку делать по исходному значению, а где нужно строковое представление - использовать строку...
17 июн 14, 08:02    [16173138]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
Z00m,

Спасибо.
17 июн 14, 08:04    [16173142]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
_TempFox_,

А так ругается что выборка больше одной записи...
17 июн 14, 08:11    [16173157]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
_TempFox_
Member

Откуда: из норы
Сообщений: 33
Ну, да ладно, у Вас уже есть рабочий вариант от Z00m'а...
17 июн 14, 08:15    [16173164]     Ответить | Цитировать Сообщить модератору
 Re: Не выполняется сортировка по дате  [new]
Функция
Member

Откуда:
Сообщений: 81
_TempFox_,

Ага. Спасибо.
17 июн 14, 08:21    [16173175]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить