Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unpivot отключить сортировку / 20 сообщений из 20, страница 1 из 1
19.03.2018, 14:18
    #39616813
Дева Мария
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
поискала в разных источниках, но не нашла, как справиться с сортировкой в 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
19.03.2018, 14:22
    #39616819
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
Дева МарияХотя я этого не желаюПожелания сортировки оформляются в виде ORDER BY.
...
Рейтинг: 0 / 0
19.03.2018, 14:30
    #39616823
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
Дева Мариято есть, видно, что результат упорядочен по column_name
Не верь глазам
Если нет указания как сортировать, то и нет сортировки
...
Рейтинг: 0 / 0
19.03.2018, 14:42
    #39616835
Дева Мария
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
шК0ДЕРДева Мариято есть, видно, что результат упорядочен по column_name
Не верь глазам
Если нет указания как сортировать, то и нет сортировки

воистину..

все дело в row_number

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

Код: 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
19.03.2018, 14:57
    #39616847
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
Дева Мариятом порядке, в каком задаю в селекте ?


Код: 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
19.03.2018, 14:59
    #39616849
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
немного ошибся в сообщении выше.
...
Рейтинг: 0 / 0
19.03.2018, 15:08
    #39616857
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
Дева Мария,

с гарантіей
Код: 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
19.03.2018, 16:03
    #39616895
Дева Мария
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
мне нужно с гарантией именно в том порядке, в каком я укажу.

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

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

......
stax
...
Рейтинг: 0 / 0
19.03.2018, 16:30
    #39616914
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
Ищешь непорочное зачатие? Ну нет в твоем 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
19.03.2018, 16:48
    #39616937
Дева Мария
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
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
19.03.2018, 16:49
    #39616938
Дева Мария
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unpivot отключить сортировку
StaxДева Мариямне нужно с гарантией именно в том порядке, в каком я укажу.

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

......
stax

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

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

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

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

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


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

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

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


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