以前在sql server 里写过,由于自己oracle水平有限(最近刚学oracle)希望高手指点
有下面这些测试数据
SQL> select * from stu;STUDENT SUBJECT GRADE
--------------- -------------------- ----------
student1 语文 88
student1 数学 80
student1 英语 97
student1 物理 100
student2 语文 85
student2 数学 60
student2 英语 97
student2 物理 76
student2 化学 98已选择11行。
怎么得出类似这样的结果
STUDENT 语文 数学 英语 物理 化学
student1 88 80 97 100 0
student1 85 60 97 76 98要求
1、能够满足SUBJECT可变的情况,也就是不能够规定一定为 语文、数学 ...
2、注意上面最终输出时“化学”的处理
有下面这些测试数据
SQL> select * from stu;STUDENT SUBJECT GRADE
--------------- -------------------- ----------
student1 语文 88
student1 数学 80
student1 英语 97
student1 物理 100
student2 语文 85
student2 数学 60
student2 英语 97
student2 物理 76
student2 化学 98已选择11行。
怎么得出类似这样的结果
STUDENT 语文 数学 英语 物理 化学
student1 88 80 97 100 0
student1 85 60 97 76 98要求
1、能够满足SUBJECT可变的情况,也就是不能够规定一定为 语文、数学 ...
2、注意上面最终输出时“化学”的处理
写出来 谢谢
怎么执行起来到处都是错误呢? 小弟初学oracle PL/SQL,希望libin_ftsafe(子陌红尘)帮助解答一下
declare col1 a.税种%type; --定义类型
sqlstr varchar2(8000);
cursor c_try is select distinct 税种 from a;
begin
sqlstr:='';
open c_try;
loop
fetch c_try into col1;
exit when c_try%notfound;
sqlstr:=sqlstr||', sum(decode(税种,'''||col1||''',金额,0.0)) as '||col1;
exit when c_try%notfound;
end loop;
close c_try;
sqlstr:='create table tt as select 单位名称,sum(金额) as 合计'||sqlstr||' from a group by 单位名称';
--tt为刚创建的一个保存结果的表
execute immediate sqlstr;
end;--执行
select * from tt;
declare col1 a.税种%type; --定义类型exit when c_try%notfound;都要改,第二句那里好象不是oracle的写法吧
请libin_ftsafe(子陌红尘)给个oracle里可以通过的例子好吗?我也没明白。再次感谢