有两张表:表 1
STUDNAME COURSENAME CSCORE USCORE
-------------------------------- 
jack       A          80    1
jack       B          60    5
jack       C          70    3
rose       A          95    1
rose       B          85    5
rose       C          75    3
lucy       A          45    1
lucy       B          55    5
lucy       C          50    3
lily       A          25    1
lily       B          15    5
lily       C          10    3表2
姓名    A       B      C   总学分
-------------------------------- 
jack    80     60     70     9
rose    95     85     75     9
lucy    45     55     50     9
lily    25     15     10     91. 从表1获取数据,格式化输出为表2。
2. 从表2读取数据,格式化输出为表1。
PS: 脚本关键语句最好有注释

解决方案 »

  1.   

    select ..
    sum(decode(...))
    group by ..
      

  2.   


    create table t1 (STUDNAME varchar2(20), COURSENAME varchar2(10), CSCORE number(3), USCORE number(5));insert into t1 values ('jack','A',80,1);
    insert into t1 values ('jack','B',60,5);
    insert into t1 values ('jack','C',70,3);
    insert into t1 values ('rose','A',95,1);
    insert into t1 values ('rose','B',85,5);
    insert into t1 values ('rose','C',75,3);
    insert into t1 values ('lucy','A',45,1);
    insert into t1 values ('lucy','B',55,5);
    insert into t1 values ('lucy','C',50,3);
    insert into t1 values ('lily','A',25,1);
    insert into t1 values ('lily','B',15,5);
    insert into t1 values ('lily','C',10,3);
    select STUDNAME,
           sum(decode(COURSENAME,'A',CSCORE,0)) A, 
           sum(decode(COURSENAME,'B',CSCORE,0)) B,
           sum(decode(COURSENAME,'C',CSCORE,0)) C,
           sum(USCORE) USCORE
    from t1
    group by STUDNAME
       STUDNAME    A    B    C    USCORE
    -------------------------------------------------
    1 rose 95 85 75 9
    2 jack 80 60 70 9
    3 lucy 45 55 50 9
    4 lily 25 15 10 9
      

  3.   

    2转1    学分如何来划分呢?  每科的学分是固定的? 
    然后排序是按系统顺序rose jack ..这个应该不是按字母排序吧   
      

  4.   


    2转1 学分如何来划分呢? 每科的学分是固定的? 
    -》每科的学分是固定的,问题1和2是独立的两个题,没什么必然联系,就是从表2的视图变为表1的视图。
    然后排序是按系统顺序rose jack ..这个应该不是按字母排序吧
    -》明白了,谢谢。
      

  5.   


    select STUDNAME ,COURSENAME,CSCORE ,USCORE 
    from
    (select 姓名 STUDNAME ,'A' COURSENAME,A CSCORE ,1 USCORE
    union all
    select 姓名,'B' B,B,3
    union all
    select 姓名,'C' C,C,5)
    order by STUDNAME