create table  Greade(
  gid number,
  chinese number not null,
  match  number not null,
  english number not null,
  primary key (gid)
 )
insert into Greade values (1,'45',96,'67');
insert into Greade values (2,'22',76,'45');
insert into Greade values (3,'76',36,'55');查询的结果要变成  分数小于60 的为不及格 ,大于60 小于80的 为及格,大于等于80的为优秀
     例如
          gid    chinese   match   english
          1      不及格      优秀      及格
求指导,谢谢!sql

解决方案 »

  1.   

    使用 case when参考 : http://cindysaj.iteye.com/blog/296635
      

  2.   

    个人建议创建一个函数,将分数作为参数传递,返回"不及格","优秀","及格"等结果,当然,函数内部就使用分支进行判断咯!也可以不用函数,如果科目一多的话,但你的SQL会显示得特别大!
      

  3.   

    另附相关sql  select gid,CASE
             WHEN chinese < 60 THEN
              '不及格'
             WHEN chinese < 80 THEN
              '及格'
              ELSE
              '优秀'
           END as chineseLevel,chinese
      from Greade;
      

  4.   


    select gid,
    CASE
             WHEN chinese < 60 THEN
              '不及格'
             WHEN chinese < 80 THEN
              '及格'
              ELSE
              '优秀'
           END as chinese,
    CASE
             WHEN match < 60 THEN
              '不及格'
             WHEN match  < 80 THEN
              '及格'
              ELSE
              '优秀'
           END as match,
    CASE
             WHEN english < 60 THEN
              '不及格'
             WHEN english < 80 THEN
              '及格'
              ELSE
              '优秀'
           END as english
      from Greade; 
      

  5.   

    SELECT greade.*,Decode(Sign(greade.english-80),0,'優秀',1,'優秀',Decode(Sign(greade.english-60),1,'及格',0,'及格','不及格')) FROM greade;