这个存储过程应该如何编写
本人有一个需求。数据库中的字段如下
year month supermarketName sales
2012 1 超市1 500
2012 1 超市2 800
。。。 。。 。。 。。。
2013 10 超市1 1400
想要通过一个存储过程表示为如下需求
year supermarketName 1月 2月 3月 4月 。。。。 12月
2012 超市1 500 600
2012 超市2 800 700
这个存储过程应该如何写呢,本人尚在学习阶段,工作急需呀。谢谢大家了!!!
因为sales字段是动态计算得出的,需要写一个动态的行转列的存储过程,谢谢大家,这个存储过程应该如何写?本人不太会。谢谢大家!!!
补充一下,sales的计算公式大概的意思max(case when month=1 then 1-sum(sale)/count(id) else null end)之类的公式。
------解决方案--------------------create or replace procedure sp_tab(c_result out varchar2)
as
sqlstr varchar2(4000) := 'select year, supermarketname ' ;
c1 sys_refcursor;
v1 varchar2(100);
begin
open c1 for 'select distinct month from tab';
loop
fetch c1 into v1;
exit when c1%notfound;
sqlstr := sqlstr
------解决方案--------------------',max(decode(month,'''
------解决方案-------------------- v1
------解决方案-------------------- ''',sales))"'
------解决方案-------------------- v1
------解决方案-------------------- '月"';
end loop;
close c1;
sqlstr := sqlstr
------解决方案-------------------- ' from tab group by year, supermarketname';a
c_result:= sqlstr;
dbms_output.put_line(c_result);