以前在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、注意上面最终输出时“化学”的处理

解决方案 »

  1.   

    SUBJECT可变……需要多写几句了
      

  2.   

    我需要SQL 版本的向楼柱把代码 
    写出来 谢谢
      

  3.   

    下面这个怎么用啊,不是动态SQL吗? 
    怎么执行起来到处都是错误呢? 小弟初学oracle PL/SQL,希望libin_ftsafe(子陌红尘)帮助解答一下
      

  4.   

    --测试
    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;
      

  5.   

    上面语句在
    declare col1 a.税种%type;        --定义类型exit when c_try%notfound;都要改,第二句那里好象不是oracle的写法吧
    请libin_ftsafe(子陌红尘)给个oracle里可以通过的例子好吗?我也没明白。再次感谢