属性相同的列转为多行
存在以下表
id year month1 month2 month3
01 2013 23 24 25
02 2013 22 23 24
转为以下表
id year month
01 2013 23
01 2013 24
01 2013 25
02 2013 22
02 2013 23
02 2013 24
求方法
------解决方案--------------------SELECT ID, YEAR, MONTH1 AS MONTH FROM (
SELECT * FROM 表 UNPIVOT(
MONTH1 FOR MON IN (MONTH1, MONTH2, MONTH3)
)
)
顺便说一句,不建议使用oracle的关键字/保留字做字段名、对象名.
------解决方案--------------------
行转列 使用 case when +聚合
列转行 使用 递归 level 或者connect by prior 构造伪列