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。