看了坛里关于行转列的问题,用里面给的答案测试的时候出了一大堆问题:
oracle:10g
表:ID COURSE  GRADE
   101 yuwen    60
   102 shuxue   65
   101 yuwen    90
   102 shuxue   95
下面是对答案的测试:
问题:1。decode参数中第一个是与搜索值比较的值或表达式,紧接是搜索值,再跟着是等于时的结果,最后的那是不等于的结果,为什么我测试结果中显示的与函数的说明相反
2。为什么不用max函数时,COURSE为shuxue的结果也显示
3。用max函数之后为啥只显示了一条结果
4。select 语句中加上id 字段后为什么会报错,这个错误该怎么解决?
问题很多,分很少,望大虾们不要嫌分少,多给点解答,谢谢!

解决方案 »

  1.   

    1 decode 其实就相等于case when 
    2 没加什么处理肯定是显示的
    3 max 就是取最大的 肯定显示一条
    4 你的id肯定没在group by 里或者不在聚合函数处理
      

  2.   

    楼主啊楼主啊你DECODE的用法是没有问题的,但是为什么在DECODE外面套了个SUM呢?SUM是对NUMBER类型的数据求和啊,你DECODE的结果明显是VARCHAR类型的呀。。
    显然不能用SUM