Plsql 将列转换为行

Plsql 将列转换为行,plsql,oracle10g,pivot,Plsql,Oracle10g,Pivot,我坚持这个要求- 我有一些格式的数据 条目现在在同一行显示2011年1月和2011年2月的数据,分别显示 最后,我需要使用dbms_output.put_line命令打印数据 我使用的是Oracle 10.2g。Oracle 10g没有PIVOT函数,但您可以使用带有CASE表达式的聚合函数将数据行转换为列。基本语法是: select d.id, d.site, d.entrance, sum(case when d.date = 'Jan.2011' then enters els

我坚持这个要求-

我有一些格式的数据

条目现在在同一行显示2011年1月和2011年2月的数据,分别显示

最后,我需要使用dbms_output.put_line命令打印数据


我使用的是Oracle 10.2g。

Oracle 10g没有PIVOT函数,但您可以使用带有CASE表达式的聚合函数将数据行转换为列。基本语法是:

select d.id,
  d.site,
  d.entrance,
  sum(case when d.date = 'Jan.2011' then enters else 0 end) "Jan.2011",
  sum(case when d.date = 'Feb.2011' then enters else 0 end) "Feb.2011"
from
(
  select id, site, entrance, date, enters
  from yourdata
) d
group by d.id, d.site, d.entrance;

注意:您可以使用当前查询替换子查询中的数据。

选择分区上的分区id、分区nm、分区tmp nm、月份、分区上的行编号按月份顺序按行编号rn从选择d.ce\U id、分区nm、分区tmp nm到分区日志,'MON.YYYY'月,和c。总计输入v\U tmp a、ttmp b、mv\U tmp\U每日流量c,tce d,其中a.tmp_id=c.tmp_id和b.tmp_id=c.tmp_id和d.ce_id=a.ce_id和c.log_ts介于“2011年1月1日”和“2011年2月28日”之间,a.ce_id=286按d.ce_id分组,d.ce_nm,至“MON.yyyyy”,b.tmp_nm按订单至“MON.yyyyyyy”说明