2016-12-16 3 views
0

так же, как этот оригинальный SO Pivoting rows into columns dynamically in OracleUNPIVOT столбцы в строки (оракул)

, но я хотел бы сделать противоположный

как я могу получить

ID  NAME AGE GENDER STATUS 
----  ----- ----- ------ -------- 
    1  Bob  30  male 
    2  Susan     married 

в этот

ID  K  V 
----  ----- ----- 
    1  name Bob 
    1  age  30 
    1  gender male 
    2  name Susan 
    2  status married 
+2

Я думаю, что вы ищете 'UNPIVOT'. – Siyual

ответ

1

Вы ищете unpivot.

select * from t 
unpivot (
      v for k in ("NAME","AGE","GENDER","STATUS") 
     ) u 

Возможно, у вас есть несоответствие типа, если возрастный столбец является целым числом. В этом случае преобразуйте его в символ до его раскрутки.

select * 
from (select id,name,to_char(age) age,gender,status from t) t 
unpivot (
     v for k in ("NAME","AGE","GENDER","STATUS") 
     ) u 
Смежные вопросы