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

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

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

В таблице не два поля, а сколько угодно помимо этих указанных...
...
Рейтинг: 0 / 0
19.03.2003, 12:00
    #32122758
Begemot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
здесь кажется одним запросом не обойтись...надо на PL/SQL писать
...
Рейтинг: 0 / 0
19.03.2003, 12:04
    #32122768
ksukhonosenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
Если я верно понимаю суть SQL, то он работает со множествами как с целым. В этой задаче кажеться нужно ПОСЛЕДОВАТЕЛЬНО выполнять операции (нужен цикл). А вот цикл в СКЛе сделать-то и нельзя.
...
Рейтинг: 0 / 0
19.03.2003, 12:15
    #32122784
Sterh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
/topic/6481
...
Рейтинг: 0 / 0
19.03.2003, 12:18
    #32122791
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
/topic/18203
...
Рейтинг: 0 / 0
19.03.2003, 20:05
    #32123237
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
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
20.03.2003, 21:38
    #32124203
dasistgut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
страшный SQL запрос
Идея может быть и не совсем отвечает условиям задачки, но может быть натолкнёт на альтернативные пути решений.
В 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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / страшный SQL запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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