Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка / 10 сообщений из 10, страница 1 из 1
10.09.2018, 18:01
    #39700583
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Добрый день, подскажите почему у меня не работает сортировка nulls first(чтобы сразу пустые значения шли)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select t.*,
       -- Для группировки
       FIRST_VALUE(t.rateid) OVER (partition BY depname, OnlyDate, ratetime, fullusername 
                             ORDER BY depname, OnlyDate, ratetime nulls first, fullusername) AS NN,
       Row_Number() OVER (partition BY depname,  OnlyDate, ratetime, fullusername,   valueorder, header1, header2, header3
                    ORDER BY depname,   OnlyDate, ratetime nulls first, fullusername,  valueorder, header1, header2, header3) AS RN    
  from ( ....


вот как сейчас выводит, а должно быть наоборот
...
Рейтинг: 0 / 0
10.09.2018, 18:10
    #39700586
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
petrovichvanyaпочему у меня не работает сортировкаВ этом запросе ты не сортировал.
...
Рейтинг: 0 / 0
10.09.2018, 18:21
    #39700590
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Elic,

так сортировка идет ORDER BY. Она работает если местами поменять данные(тогда будет по другому сортироваться), а если nulls first написать или desc не работает.
...
Рейтинг: 0 / 0
10.09.2018, 18:23
    #39700592
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
petrovichvanyaтак сортировка идет ORDER BYТы путаешь сортировку внутри оконной функции с сортировкой запроса.
...
Рейтинг: 0 / 0
10.09.2018, 18:24
    #39700593
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
petrovichvanya, для подсчета first_value и row_number твоя сортировка скорее всего отработала
...
Рейтинг: 0 / 0
10.09.2018, 18:31
    #39700594
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
у меня в конце запроса есть еще сортировка
Код: plsql
1.
2.
3.
           ...        )
order by depname, OnlyDate, ratetime nulls first, ratedate,valueorder,header1,header2,header3
) t


но она не работает из за этой
Код: plsql
1.
2.
3.
4.
  FIRST_VALUE(t.rateid) OVER (partition BY depname, OnlyDate, ratetime, fullusername 
                             ORDER BY depname, OnlyDate, ratetime nulls first, fullusername) AS NN,
       Row_Number() OVER (partition BY depname,  OnlyDate, ratetime, fullusername,   valueorder, header1, header2, header3
                    ORDER BY depname,   OnlyDate, ratetime nulls first, fullusername,  valueorder, header1, header2, header3) AS RN   



если этот кусок кода удалить, тогда та сортировка, что в конце программы будет работать
...
Рейтинг: 0 / 0
10.09.2018, 18:32
    #39700595
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
а можно сортировку сразу тут сделать

Код: plsql
1.
to_char(c.approvedate,'hh24:mi:ss') as ratetime 



чтобы она сразу уже шла отсортированная ?
...
Рейтинг: 0 / 0
11.09.2018, 03:12
    #39700689
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Зря оракл разрешил order by в подзаросах.
...
Рейтинг: 0 / 0
11.09.2018, 07:27
    #39700710
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
petrovichvanyaу меня в конце запроса есть еще сортировкаЭто не "в конце". В этом твоя генетическая ошибка.
...
Рейтинг: 0 / 0
11.09.2018, 09:19
    #39700746
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка
Elic, спасибо) написал в конце, теперь работает
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]