bei 发表于 2018-9-21 10:37:33

oracle pivot 和 unpivot 函数的使用

  pivot的格式
  select from
  ( inner_query)
  pivot(aggreate_function for pivot_column in ( list of values))
  order by ...;
  用法举例:
  select
  from (
  select month,prd_type_id,amount
  from all_sales
  )
  pivot (sum(amount) for month in (1 as JAN,2 as FEB,3 as MAR,4 as APR)
  )
  order by prd_type_id
  转换多个列
  select * from
  (select month,prd_type_id,amount
  from all_sales
  )
  pivot(sum(amount) for (month,prd_type_id) in (
  (1,2) as JAN_P2,(2,3) as FEB_P3)
  );
  在转换中使用多个聚合函数
  select * from (select cust_no,mag_man_cert_type,t.mag_man_cert_no,mag_man_type from L_CIF_ENT_CUST_MAG_MAN_INFO t
  pivot (max(mag_man_cert_NO) as no ,max(mag_man_cert_type) as type for mag_man_type In ('01' as GLR01,'02' as GLR02,'03' as GLR03));
  unpivot可以实现列转行,所转的列的字段类型必须一致
  unpivot 的用法举例:
  select * from PIVOT_SALES_DATE
  unpivot (amount for month in (JAN,FEB,MAR,APR));

页: [1]
查看完整版本: oracle pivot 和 unpivot 函数的使用