首页 > 解决方案 > 我需要转换 oracle 表数据,将 1 列值固定为标识符,将所有其他列名和值作为单行

问题描述

我有一个包含多列的 oracle 表,我需要以固定 1 列值和其他列名称及其值显示为单行的方式转换数据。

对于 ex- 表目前是这样的:

|ColA| ColB| ColC |ColD |ColE|

1      abc  def   ghi  jkl

2      mbc  nef   ohi  pkl

3      abc        grt  qkt

4      alc  dhj   li   ttl

5      rec  dtf   goi  jdr

我需要数据的最终格式是:

1;colB;abc

1;ColC;def

1;colD;ghi

1;colE;jkl

2;colB;mbc

2;ColC;nef

2;colD;ohi

2;colE;pkl

标签: oracleoracle11g

解决方案


这应该会为您解决:

SELECT *
  FROM (SELECT COLA || ';' || 'ColB;' || COLB AS DATA FROM SOME_TABLE UNION ALL
        SELECT COLA || ';' || 'ColC;' || COLC FROM SOME_TABLE UNION ALL
        SELECT COLA || ';' || 'ColD;' || COLD FROM SOME_TABLE UNION ALL
        SELECT COLA || ';' || 'ColE;' || COLE FROM SOME_TABLE)
  ORDER BY DATA

db<>在这里摆弄


推荐阅读