Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Перевернуть таблицу  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 1972
есть таблица
ID NAME
1 A1
2 B1
3 C1
1 A2
2 B2
3 C2
1 A3
2 B3
3 C3

Помогите с процедурой чтоб данные были в следующем ввиде

1 2 3
A1 A2 A3
B1 B2 B3
C1 C2 C3
28 дек 07, 12:09    [5106911]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ТОП 14 не поможет?
28 дек 07, 12:14    [5106947]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Elic
Member

Откуда:
Сообщений: 29980
RTFFAQ про два способа транспонирования
Только вот внятного критерия для идентификации будущей строки что-то не наблюдается
28 дек 07, 12:20    [5107008]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 1972
Что то особо не опнял
28 дек 07, 12:24    [5107037]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Elic
Member

Откуда:
Сообщений: 29980
-=Koba=-
Что то особо не опнял
RTFM
28 дек 07, 12:28    [5107066]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 1972
ID будет название колонки
А поле name ее содержанием
28 дек 07, 12:33    [5107095]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Elic
Member

Откуда:
Сообщений: 29980
-=Koba=-
ID будет название колонки
А поле name ее содержанием
Почему тогда (2,B3) в третьем, а не во втором столбце?
28 дек 07, 13:07    [5107353]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 1972
Пардон перепутал
1 2 3
---------
A1 B1 C1
A2 B2 C2
A3 B3 C3
28 дек 07, 13:24    [5107423]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Elic
Member

Откуда:
Сообщений: 29980
-=Koba=-
Пардон перепутал
1 2 3
---------
A1 B1 C1
A2 B2 C2
A3 B3 C3
Почему A1 в первой строке, A2 - во второй, а не наоборот?
Включай голову. RTFM
28 дек 07, 14:02    [5107622]     Ответить | Цитировать Сообщить модератору
 Re: Перевернуть таблицу  [new]
Евгений_25
Member

Откуда: Харьков
Сообщений: 460
-=Koba=-
есть таблица
ID NAME
1 A1
2 B1
3 C1
1 A2
2 B2
3 C2
1 A3
2 B3
3 C3

Помогите с процедурой чтоб данные были в следующем ввиде

1 2 3
A1 A2 A3
B1 B2 B3
C1 C2 C3


WITH t AS (SELECT 1 ID, 'A1' NAME FROM dual UNION ALL SELECT 
		2, 'B1' FROM dual UNION ALL SELECT
		3, 'C1' FROM dual UNION ALL SELECT
		1, 'A2' FROM dual UNION ALL SELECT
		2, 'B2' FROM dual UNION ALL SELECT
		3, 'C2' FROM dual UNION ALL SELECT
		1, 'A3' FROM dual UNION ALL SELECT
		2, 'B3' FROM dual UNION ALL SELECT
		3, 'C3' FROM dual)

SELECT max(decode(pr,1,NAME)) "1"
      ,max(decode(pr,2,NAME)) "2"
      ,max(decode(pr,3,NAME)) "3" 
  FROM (SELECT ID
              ,NAME
              ,row_number() over (PARTITION BY ID ORDER BY ID,NAME) pr 
          FROM t 
        ) 
 GROUP BY id


1	2	3
-------------------------------------------
A1	A2	A3
B1	B2	B3
C1	C2	C3

-=Koba=-

Пардон перепутал
1 2 3
---------
A1 B1 C1
A2 B2 C2
A3 B3 C3


WITH t AS (SELECT 1 ID, 'A1' NAME FROM dual UNION ALL SELECT 
		2, 'B1' FROM dual UNION ALL SELECT
		3, 'C1' FROM dual UNION ALL SELECT
		1, 'A2' FROM dual UNION ALL SELECT
		2, 'B2' FROM dual UNION ALL SELECT
		3, 'C2' FROM dual UNION ALL SELECT
		1, 'A3' FROM dual UNION ALL SELECT
		2, 'B3' FROM dual UNION ALL SELECT
		3, 'C3' FROM dual)

SELECT max(decode(id,1,NAME)) "1"
      ,max(decode(id,2,NAME)) "2"
      ,max(decode(id,3,NAME)) "3" 
  FROM (SELECT ID
              ,NAME
              ,row_number() over (PARTITION BY ID ORDER BY ID,NAME) pr 
          FROM t 
        ) 
 GROUP BY pr


1	2	3
-------------------------------------------
A1	B1	C1
A2	B2	C2
A3	B3	C3
28 дек 07, 14:46    [5107901]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить