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

Например, есть таблица
Month Value
1 21
2 11
3 10
4 26
.....

Нужно получить
1 2 3 4
21 11 10 26

В таблице не два поля, а сколько угодно помимо этих указанных...
...
Рейтинг: 0 / 0
страшный SQL запрос
    #32122758
Begemot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здесь кажется одним запросом не обойтись...надо на PL/SQL писать
...
Рейтинг: 0 / 0
страшный SQL запрос
    #32122768
ksukhonosenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я верно понимаю суть SQL, то он работает со множествами как с целым. В этой задаче кажеться нужно ПОСЛЕДОВАТЕЛЬНО выполнять операции (нужен цикл). А вот цикл в СКЛе сделать-то и нельзя.
...
Рейтинг: 0 / 0
страшный SQL запрос
    #32122784
Фотография Sterh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/6481
...
Рейтинг: 0 / 0
страшный SQL запрос
    #32122791
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/18203
...
Рейтинг: 0 / 0
страшный SQL запрос
    #32123237
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Etot vopros/metod neodnokratno obsugdalsya, pravda v neskolko drugoy plockosty.
Vpolne primenimo ispolzovanie konstrukcii cast(multyset()).
Tehnologiya primerno sleduyuschaya:
Код: plaintext
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
create or replace type t_r as object
( n_mon   number,
  cnt_mon number
);
/

create or replace type t_t as table of t_r;
/
col t format a70
col dep_name format a25

select d.dep_name,
       cast(multiset( select e.emp_id, e.job_id
                      from emps e
                      where d.dep_id = e.dep_id
                            and
                            rownum <  5 ) as t_t) t
from deps d
where rownum <  10 
;

DEP_NAME		  T(N_MON, CNT_MON)
 ------------------------- ----------------------------------------------------------------------
 
Main department 	  T_T(T_R( 1 ,  1 ))
department #  11  	  T_T(T_R( 1676 ,  8 ), T_R( 12110 ,  4 ), T_R( 12231 ,  23 ), T_R( 12252 ,  9 ))
department #  12  	  T_T(T_R( 1565 ,  34 ), T_R( 11704 ,  8 ), T_R( 12703 ,  20 ), T_R( 12746 ,  35 ))
department #  13  	  T_T(T_R( 920 ,  19 ), T_R( 12378 ,  16 ), T_R( 12525 ,  11 ), T_R( 839 ,  35 ))
department #  14  	  T_T(T_R( 1285 ,  9 ), T_R( 1337 ,  17 ), T_R( 1437 ,  40 ), T_R( 11956 ,  18 ))
department #  15  	  T_T(T_R( 1450 ,  21 ), T_R( 1712 ,  26 ), T_R( 11748 ,  33 ), T_R( 12406 ,  5 ))
department #  16  	  T_T(T_R( 1680 ,  20 ), T_R( 12131 ,  36 ), T_R( 12429 ,  6 ), T_R( 667 ,  10 ))
department #  17  	  T_T(T_R( 1582 ,  4 ), T_R( 12395 ,  18 ), T_R( 12744 ,  18 ), T_R( 13128 ,  38 ))
department #  18  	  T_T(T_R( 944 ,  35 ), T_R( 11718 ,  3 ), T_R( 12403 ,  16 ), T_R( 212 ,  6 ))

 9  rows selected.

...
Рейтинг: 0 / 0
страшный SQL запрос
    #32124203
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея может быть и не совсем отвечает условиям задачки, но может быть натолкнёт на альтернативные пути решений.
В Access можно сделать так:
1 создаём табличку T с полями f1, f2
2 создаём запрос -

TRANSFORM t.f2
SELECT f1
FROM Таблица1 t
Group by f2
PIVOT f1;

Получаем:
f1...1...2....3....4
3.............10
2........11
1...21
4...................26
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / страшный SQL запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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