powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Развернуть столбцы в строки
12 сообщений из 12, страница 1 из 1
Развернуть столбцы в строки
    #40098236
Romanov-krd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача:Напишите запрос, который позволит получить следующий результат:
COLUMN
1
2
3
4
Предложите несколько вариантов решения.

На сколько знаю это можно сделать с помощью pivot, но он же используется только с агрегатными функциями. Как как это можно сделать?
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098241
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
select column_value column from table(sys.odcinumberlist(1, 2, 3, 4));
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098294
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT ROWNUM AS "COLUMN" FROM dual CONNECT BY LEVEL <= 4;

    COLUMN
----------
         1
         2
         3
         4
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098298
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romanov-krd
На сколько знаю это можно сделать с помощью pivot, но он же используется только с агрегатными функциями. Как как это можно сделать?
Какой же это pivot, когда это классический unpivot.
Код: plsql
1.
select rownum from dual unpivot (dummy for x in (dummy, dummy, dummy, dummy))
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098299
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег

А так можно было?!
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098317
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя у тут подумал, лучше так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with x as (
    select xmlquery('for $i in 1 to 4 return <column>{$i}</column>' returning content) x from dual
)
select xt.* from x, xmltable('/column'
    passing x.x
    columns
        "COLUMN" number path '/column'
) xt

    COLUMN
----------
         1
         2
         3
         4
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098321
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PuM256
Хотя у тут подумал, лучше так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with x as (
    select xmlquery('for $i in 1 to 4 return <column>{$i}</column>' returning content) x from dual
)
select xt.* from x, xmltable('/column'
    passing x.x
    columns
        "COLUMN" number path '/column'
) xt

    COLUMN
----------
         1
         2
         3
         4


"Я могла бы придумать и более запутанный способ, как это сделать", - с гордостью сказала Белая Королева.
:-)
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098338
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> select
1 as "Column",
2 as "Column",
3 as "Column",
4 as "Column" from dual
/
SQL> column "Column" newline
SQL> /

    Column
----------
    Column
----------
    Column
----------
    Column
----------
	 1
	 2
	 3
	 4
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098346
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Кобанчег

А так можно было?!
Почему бы нет.
Конечно генерировать последовательности таким образом - абсурд, но для размножения данных - вполне себе вариант.
То есть, если есть отрезки (from, to) то развернуть их в набор данных (коррдината, признак начала/конца) можно
1. union all
2. cross join
3. unpivot
Вот тут для кретива даже двойной unpivot понадобился - 22236199 .
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098349
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PuM256
Хотя у тут подумал, лучше так:


Ну если ты решил приплести XML:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from xmltable('1 to 4');
COLUMN_VALUE
-------------------
1
2
3
4

SQL>



SY.
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098351
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PuM256
лучше так
Зарплату платят по числу keystrokes?

PS.
Код: plaintext
select rownum from xmltable('1 to 4')
...
Рейтинг: 0 / 0
Развернуть столбцы в строки
    #40098463
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT ROWNUM AS "COLUMN" FROM all_tables WHERE ROWNUM <= 4;

    COLUMN
----------
         1
         2
         3
         4
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Развернуть столбцы в строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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