首页 > 解决方案 > 在oracle中将数据列成行

问题描述

在此处输入图像描述

数据以表格格式显示在屏幕截图中。我想转换成所需的格式,如下所述。

表描述:

Table A
(branch_code, branch_name, branch_state, hol1, hol2, hol3....hol100)

预期产出

TAMF046  14/01/2021
TAMF046  15/01/2021
TAMF046  26/01/2021
KERF047  26/01/2021
KERF047  11/03/2021
KERF047  02/04/2021

标签: sqloracleunpivot

解决方案


这正是UNPIVOT为了

with t(id, c1, c2, c3) as (
  select 1, 'a', 'b', 'c' from dual union all
  select 2, 'aa', 'bb', 'cc' from dual
)
select *
from t
unpivot (
  val
  for col in (
    c1 as 'A1',
    c2 as 'A2',
    c3 as 'A3'
  )
)

val是将包含来自 columns 的值的新列c1 c2 c3

col是新列,它将包含来自的列的val名称。

A1 A2 A3是您要col为每个未透视列填写的值(如果您对原始列名没问题,可以省略这些别名)。


推荐阅读