Home > Blockchain >  Transform column to row data in Oracle
Transform column to row data in Oracle

Time:12-16

Eg : #Oracle

Sample data :

ID A_ID B_ID C_ID D_ID
1 'ABC' 'XYZ' 'PLO' 'QWE'

Expected Output :

ID A_ID
1 'ABC'
1 'XYZ'
1 'PLO'
1 'QWE'

CodePudding user response:

You can use the unpivot clause:

select id, a_id
from your_table
unpivot (a_id for orig_id in (a_id, b_id, c_id, d_id))
ID A_ID
1 ABC
1 XYZ
1 PLO
1 QWE

fiddle

The operation creates an extra column, which I've called orig_id, which can be used to identify which of the original columns a given value came from. I've excluded it from the select list, but the fiddle includes a version that shows it. You can also change the value that appears, by adding as '...' to each column name in the in () clause.

You can read more about pivoting and unpivoting in this article.

  • Related