数据库表: a
列名 : 省份 prov 产品 prod 日期 time 订购量 ord省份 产品 日期 订购量
湖北 笔记本 20091110 30
湖北 书 20091110 30
安徽 笔记本 20091110 20
北京 笔记本 20091110 10
湖北 笔记本 20091111 40
安徽 书 20091111 50
安徽 笔记本 20091111 30
北京 笔记本 20091111 20想要的查询结果:
省份 产品 20091110 20091111
湖北 笔记本 30 40
湖北 书 30
安徽 笔记本 20 30
安徽 书 50
北京 笔记本 10 20希望高手帮我解答下
列名 : 省份 prov 产品 prod 日期 time 订购量 ord省份 产品 日期 订购量
湖北 笔记本 20091110 30
湖北 书 20091110 30
安徽 笔记本 20091110 20
北京 笔记本 20091110 10
湖北 笔记本 20091111 40
安徽 书 20091111 50
安徽 笔记本 20091111 30
北京 笔记本 20091111 20想要的查询结果:
省份 产品 20091110 20091111
湖北 笔记本 30 40
湖北 书 30
安徽 笔记本 20 30
安徽 书 50
北京 笔记本 10 20希望高手帮我解答下
sum(case when time='20091110' then ord else 0 end),
sum(case when time='20091111' then ord else 0 end)
...
from tab1
group by prov,prod
create or replace procedure tmp_pro(mycursor out sys_refcursor) is
m_sql varchar2(4000);
m_sql1 varchar2(4000);
c sys_refcursor;
temp varchar2(10);
begin
m_sql:=' select distinct * from( select prov,prod, ';
OPEN c for
select distinct time from a;
loop
fetch c into temp;
EXIT WHEN (c%NOTFOUND);
m_sql1:=m_sql1||',sum(case when time='''||temp||''' then ord else 0 end) "'||temp||'" ';
END LOOP;
m_sql1:=LTRIM(m_sql1,',');
m_sql:=m_sql||m_sql1||' from a group by prov,prod) A ';
open mycursor for
m_sql;
end tmp_pro;
from A group by prov,prod order by 1,2;