首页 > 解决方案 > Unpivot coumns into rows - PL/SQL

问题描述

我有下表 - 有很多行 -

ID  A_1  B_1  A_2  B_2   A_3  B_3
--  ----  ---  ---  ----  ---  ---
 1   0     0     0    0    0    0
 2   1     0     0    0    0    0

我需要得到以下输出表 -
行将是 ID、A_1、B_1 等等。

ID    A    B
---   --  --
1     0    0
1     0    0
1     0    0
2     1    0
2     0    0 
2     0    0

我尝试了 union, unpivot - 每个 ID 我只得到一行而不是三行。

我怎样才能做到这一点?

标签: oracleplsqloracle11gplsqldeveloper

解决方案


您必须使用 Union all 来包含重复项:

演示

结果:

在此处输入图像描述

SELECT ID, A_1 A, B_1 B FROM TABLE1
UNION ALL
SELECT ID, A_2, B_2 FROM TABLE1
UNION ALL
SELECT ID, A_3, B_3 FROM TABLE1 ORDER BY ID;

推荐阅读