-------------------------------------------------------------------------
比如我有一个字典表 T_Dic,表内有两列:ID,DicVal,该表存有两个字典,分别是
年级字典:
1  一年级
2  二年级
3  三年级
4  四年级
5  五年级
6  六年级优秀等级字典:
7  特优
8  优秀
9  一般
10 差
11 留校观察
另外有一个学生表,T_Pupil,表内有四列:ID,姓名,性别,年级,优秀等级,
该表中年级和优秀等级是字典中的DicVal
--------------------------------------------------------------------
我想做出以下查询,该如何做???
--------------------------------------------------------------------
年级            特优     优秀     一般      差          留校观察
--------------------------------------------------------------------
1  一年级       30        60       92       0             0  
2  二年级       12        35       86       2             1  
3  三年级       20        50       57       15            2  
4  四年级       11        26       93       6             2  
5  五年级       16        22       91       11            1  
6  六年级       11        25       102      6             4  
--------------------------------------------------------------------
我想做出以上查询,该如何做???
--------------------------------------------------------------------

解决方案 »

  1.   

    select 
        t2.dicval, 
        sum(decode(tb.优秀等级,7, tb.cnt)) 特优,
        sum(decode(tb.优秀等级,8, tb.cnt)) 优秀,
        sum(decode(tb.优秀等级,9, tb.cnt)) 一般,
        sum(decode(tb.优秀等级,10, tb.cnt)) 差,
        sum(decode(tb.优秀等级,11, tb.cnt)) 留校观察
    from
        (select t.年级, t.优秀等级, count(1) cnt from t_pupil t group by t.年级, t.优秀等级 ) tb
    left join 
        t_dic t2 on t2.id=tb.年级
    group by 
        t2.dicval;