原始表:
实现效果:
实现方法:
with aaa as(
select '2021-01-01' as pdate,'90' as p1_value,'88' as p2_value,'82' as p3_value from dual
union all
select '2021-01-02' as pdate,'67' as p1,'92' as p2,'90' as p3 from dual
)
SELECT pdate,
CASE
WHEN LV = 1 THEN '1' --常量
WHEN LV = 2 THEN '2' --常量
WHEN LV = 3 THEN '3' --常量
END 时刻,
CASE
WHEN LV = 1 THEN p1_value --列名
WHEN LV = 2 THEN p2_value--列名
WHEN LV = 3 THEN p3_value--列名
END value
FROM ( SELECT * FROM aaa, (SELECT LEVEL LV FROM dual CONNECT BY LEVEL <= 3) ) --value对应的列数
ORDER BY 1, 2;