powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unpivot отключить сортировку
20 сообщений из 20, страница 1 из 1
unpivot отключить сортировку
    #39616813
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поискала в разных источниках, но не нашла, как справиться с сортировкой в unpivot по имени колонки с селекта.

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

пример :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select row_number() over(order by fio) row_num, fio, column_name, numb
  from (select 'dfvgfv' fio,
               8 number2,
               1 number1,               
               4 number4,
               5 number5,
               9 number3
          from dual) unpivot /*INCLUDE NULLS*/ EXCLUDE NULLS (numb for column_name in(number1,
                                                     number2,
                                                     number3,
                                                     number4,
                                                     number5)) test_unpivot



результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
ROW_NUM	FIO	    COLUMN_NAME	NUMB
1	                        dfvgfv	NUMBER1	      1
2	                        dfvgfм       NUMBER2	      8
3	                        dfvgfv	 NUMBER5	      5
4	                        dfvgfv	 NUMBER4	      4
5	                        dfvgfv	 NUMBER3	     9

то есть, видно, что результат упорядочен по column_name. Хотя я этого не желаю
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616819
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева МарияХотя я этого не желаюПожелания сортировки оформляются в виде ORDER BY.
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616823
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Мариято есть, видно, что результат упорядочен по column_name
Не верь глазам
Если нет указания как сортировать, то и нет сортировки
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616835
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шК0ДЕРДева Мариято есть, видно, что результат упорядочен по column_name
Не верь глазам
Если нет указания как сортировать, то и нет сортировки

воистину..

все дело в row_number

если его убрать - все хорошо
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616836
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
order by dbms_random.value
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616842
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Мария,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> select row_number() over(order by fio) row_num, fio, column_name, numb
  2    from (select 'dfvgfv' fio,
  3                 8 number2,
  4                 1 number1,
  5                 4 number4,
  6                 5 number5,
  7                 9 number3
  8            from dual) unpivot /*INCLUDE NULLS*/ EXCLUDE NULLS (numb for column_name in(number2,
  9                                                       number1,
 10                                                       number4,
 11                                                       number5,
 12                                                       number3)) test_unpivot
 13  /

   ROW_NUM FIO    COLUMN_       NUMB
---------- ------ ------- ----------
         1 dfvgfv NUMBER2          8
         2 dfvgfv NUMBER1          1
         3 dfvgfv NUMBER3          9
         4 dfvgfv NUMBER5          5
         5 dfvgfv NUMBER4          4



без гарантій

.....
stax
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616847
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Мариятом порядке, в каком задаю в селекте ?


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select  row_number() over(order by fio) row_num, fio, column_name, numb
  from (select 'dfvgfv' fio,
               8 number2,
               1 number1,               
               4 number4,
               5 number5,
               9 number3
          from dual) unpivot /*INCLUDE NULLS*/ EXCLUDE NULLS (numb for column_name in(number1,
                                                     number2,
                                                     number3,
                                                     number4,
                                                     number5)) test_unpivot
order by decode(column_name, 'NUMBER2', 1, 'NUMBER1', 2, 'NUMBER4', 3, 'NUMBER5', 4, 'NUMBER4', 5)
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616849
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного ошибся в сообщении выше.
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616857
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Мария,

с гарантіей
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SQL> ed
Wrote file afiedt.buf

  1  select row_number() over(order by fio,column_name) row_num, fio, column_name, numb
  2    from (select 'dfvgfv' fio,
  3                 8 number2,
  4                 1 number1,
  5                 4 number4,
  6                 5 number5,
  7                 9 number3
  8            from dual) unpivot /*INCLUDE NULLS*/ EXCLUDE NULLS (numb for column_name in(number1 as 'p2',
  9                                                       number2 as 'p1',
 10                                                       number3 as 'p5',
 11                                                       number4 as 'p3',
 12                                                       number5 as 'p4')) test_unpivot
 13* order by fio,column_name
SQL> /

   ROW_NUM FIO    CO       NUMB
---------- ------ -- ----------
         1 dfvgfv p1          8
         2 dfvgfv p2          1
         3 dfvgfv p3          4
         4 dfvgfv p4          5
         5 dfvgfv p5          9



.....
stax
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616895
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне нужно с гарантией именно в том порядке, в каком я укажу.

не нужна автоматическая сортировка совсем. Потому что в ФТ нет никакого признака сортировки, но поля должны идти в строгом порядке, установленным кем-то свыше , но ни по какому признаку не отсортированному
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616903
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Марияв ФТ нет никакого признака сортировки, но поля должны идти в строгом порядке, установленным кем-то свыше
Увы, так не получится.
Как вариант, заведите в таблице поле, куда будет вставляться значение для сортировки и по нему сортируйте итоговую выборку
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616908
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... unpivot( numb for (column_name, порядок) in (number1 as ('number1', 1), .... ))
order by порядок.
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616911
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Мариямне нужно с гарантией именно в том порядке, в каком я укажу.

не нужна автоматическая сортировка совсем. Потому что в ФТ нет никакого признака сортировки, но поля должны идти в строгом порядке, установленным кем-то свыше , но ни по какому признаку не отсортированному
порядок полей установлен где? таблице,вью,операторе?

......
stax
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616914
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищешь непорочное зачатие? Ну нет в твоем cелекте указания в каком порядкe возврaщать строки - посему Oracle как хочет так и возвращает. А ФТ это пройтись по всем строкам таблицы а в каком порядке это дело Oracle - хоть в шахматом. В данном случае Oracle cортировал для вычисления ROW_NUMBER ну и вернул в том-жe порядке. Кстaти, аналитика выполняется (про оптимизацию в некоторых случаях - это отдельно) после того как все cтроки пофетчены так-что ФТ или нет тут побоку. Вcе пудели cобаки но не вcе cобаки пудели. Если ORDER BY нe задан не значит результат вернeтся неотcортированным. ORDER BY нe задан означает результат может врнуться в любом порядке.

SY.
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616937
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYИщешь непорочное зачатие? Ну нет в твоем cелекте указания в каком порядкe возврaщать строки - посему Oracle как хочет так и возвращает. А ФТ это пройтись по всем строкам таблицы а в каком порядке это дело Oracle - хоть в шахматом. В данном случае Oracle cортировал для вычисления ROW_NUMBER ну и вернул в том-жe порядке. Кстaти, аналитика выполняется (про оптимизацию в некоторых случаях - это отдельно) после того как все cтроки пофетчены так-что ФТ или нет тут побоку. Вcе пудели cобаки но не вcе cобаки пудели. Если ORDER BY нe задан не значит результат вернeтся неотcортированным. ORDER BY нe задан означает результат может врнуться в любом порядке.

SY.

эх :(

а вот когда убрала row_number и без явной сортировки order by- много раз протестила- все возвернулось как нужно.

Но правильно я поняла, что это не гарантированный результат, и однажды может переклинить и вернуться как попало ?
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616938
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StaxДева Мариямне нужно с гарантией именно в том порядке, в каком я укажу.

не нужна автоматическая сортировка совсем. Потому что в ФТ нет никакого признака сортировки, но поля должны идти в строгом порядке, установленным кем-то свыше , но ни по какому признаку не отсортированному
порядок полей установлен где? таблице,вью,операторе?

......
stax

на бумажке в ТЗ. Больше нигде
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616945
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Марияна бумажке в ТЗ. Больше нигдеНу так конспектируй её так: 21268068
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616946
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева МарияНо правильно я поняла, что это не гарантированный результат, и однажды может переклинить и вернуться как попало ?

Правильно. Только ORDER BY (ну и ORDER SIBLINGS BY + DEPTH/WIDTH в иерaрхии/рекурсии) гарантируют порядок.

SY.
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616954
Дева Мария
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicДева Марияна бумажке в ТЗ. Больше нигдеНу так конспектируй её так: 21268068

39 полей :) 39 строчек говнокода в лоб :)

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


всем спасибо!
...
Рейтинг: 0 / 0
unpivot отключить сортировку
    #39616956
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дева Марияна бумажке в ТЗ. Больше нигде
Селект на основании ТЗ,
вбивайте сортировку в код и не мучайтесь (в коментар номер, дату, автора ... ТЗ)
поменяется ТЗ, поменяете сортировку в операторе

на всяк случай скан ТЗ сохраните

.....
stax
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unpivot отключить сортировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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