оракул переносит строки в столбцы - PullRequest
0 голосов
/ 05 февраля 2019

мой вопрос о транспонировании строк в столбцы.У меня есть столбцы таблицы T1 (c1, c2, c3, c4, c5) с типом данных varchar2, я хочу транспонировать полученные строки, например:

select * from T1

дает

      c1  c2  c3  c4  c5
row1  1   2   3   4   5
row2  A   B   C   D   E
....
rown  U   V   W   X   Y

ожидаемый результат

C1 1 A......U
C2 2 B......V     
C3 3 C......W
C4 4 D......X
C5 5 E......Y

все строки в разных столбцах (таблица содержит только 10-15 строк). Я пробовал следующий запрос, но он не дает ожидаемого результата.

  Select RN,value 
    From (
           Select x.*,row_number () 
             Over ( Order By c1) rn From T1 x) 
          Unpivot (value For value_type In (C1,c2,c3,c4,c5)
         ); 

1 Ответ

0 голосов
/ 05 февраля 2019

Так что вам нужно только снова повернуть данные:

Демо-версия dbfiddle

select * 
  from (
      select rn, val, col
        from (select t1.*, row_number() over (order by c1) rn from t1) 
        unpivot (val for col in (c1, c2, c3, c4, c5))) 
  pivot (max(val) for rn in (1, 2, 3, 4)) 
  order by col

Вы должныузнайте, сколько строк в t1 и перечислите их все в сводном in предложении (1, 2, 3, 4) или добавьте псевдонимы для каждого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...