将列转换为ROW

时间:2013-04-30 05:28:39

标签: plsql oracle10g pivot

我坚持这个要求 -

我有一些格式为

的数据

enter image description here

(条目现在显示两个时期(2011年1月)和(2011年2月)的数据,这些数据与单独出现的相同行显示。

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

我正在使用Oracle 10.2g。

1 个答案:

答案 0 :(得分:0)

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;

注意:您可以使用当前查询替换带有yourdata的子查询。