环境:oracle
表test,结构如下:
ID     name      grade 
1      a          80
2      b          95
3      c          85
4      d          96
5      e          98想得到如下的结果:
ID     name      grade 
1      a          
2      b          95
3      c          
4      d          96
5      e          98即是如果grade大于90,grade栏正常显示成绩,如果grade不大于90,则grade显示空,SQL该如何写?

解决方案 »

  1.   


    SQL> select * from test;        ID NAME                  GRADE
    ---------- ---------------- ----------
             5 e                        98
             4 d                        96
             3 c                        85
             2 b                        95
             1 a                        80SQL> 
    SQL> select id,name,
      2     case
      3        when grade>=90 then grade
      4        else null
      5     end grade
      6  from test;        ID NAME                  GRADE
    ---------- ---------------- ----------
             5 e                        98
             4 d                        96
             3 c                
             2 b                        95
             1 a                SQL> 
      

  2.   

    select id,name,
    case when grade > 1400 then grade
         else null
    end "grade"
    from test;
      

  3.   

    select ID,name,case when grade>=90 then grade else null end
    from test
      

  4.   

    decode 和 case 都是可以的
    顺便学习一下sign函数的用法
    sign(x) 
    x>0 返回 1
    x=0 返回 0
    x<0 返回 -1