79.Oracle数据库SQL开发之 高级查询——使用UNPIVOT子句

205 阅读1分钟

79.Oracle数据库SQL开发之 高级查询——使用UNPIVOT子句

欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…\

UNPIVOT子句将列旋转为行。

执行如下:

store@PDB1> select * from pivot_sales_data;

 

PRD_TYPE_ID     JAN          FEB       MAR           APR

----------- ---------- -------------------- ----------

           1  38909.04        70567.9  91826.98   120344.7

           2  14309.04        13367.9  16826.98  15664.7

           3  24909.04        15467.9  20626.98  23844.7

使用UNPIVOT得到将列旋转为行的销售数据:

store@PDB1> select * from pivot_sales_data unpivot( amount for month in (jan,feb,mar,apr))

    order byprd_type_id;

 

PRD_TYPE_ID MON     AMOUNT

----------- --- ----------

           1 JAN  38909.04

           1 FEB   70567.9

           1 MAR  91826.98

           1 APR  120344.7

           2 JAN  14309.04

           2 FEB   13367.9

           2 APR   15664.7

           2 MAR  16826.98

           3 JAN  24909.04

           3 MAR  20626.98

           3 FEB   15467.9

           3 APR   23844.7

 

12 rows selected.

次查询将转换过的数据又旋转过来。例如,水平行中显示的每月销量总计pivot_sales_data显示在垂直的AMOUNT列中。

         当查询返回的行有多个列,且想要将这些列显示为行时,可以考虑使用UNPIVOT。