有一张表,内有数学85,语文70,英语59三个字段。请写一条SQL语句这样显示(并写出您的思路):大于等于80的为优秀,大于等于60的为及格,小于60的为不及格。
输出: 语文    数学    英语
       及格    不及格  优秀

解决方案 »

  1.   

    select case when 语文>=80 then '优秀'
      when 语文>=60 then '及格'
      else '不及格' end 语文,
      case when 数学>=80 then '优秀'
      when 数学>=60 then '及格'
      else '不及格' end 语文,
    case when 英语>=80 then '优秀'
      when 英语>=60 then '及格'
      else '不及格' end 语文
    from tt
      

  2.   

    SELECT CASE WHEN 语文>=80 THEN '优秀' WHEN 语文 >= 60 AND WHEN 语文 <80 THEN '及格' ELSE '不及格' END AS 语文,CASE WHEN 数学>=80 THEN '优秀' WHEN 数学 >= 60 AND WHEN 数学 <80 THEN '及格' ELSE '不及格' END AS 数学,CASE WHEN 英语>=80 THEN '优秀' WHEN 英语 >= 60 AND WHEN 英语 <80 THEN '及格' ELSE '不及格' END AS 英语 FROM test;
      

  3.   

    SELECT CASE WHEN 语文>=80 THEN '优秀' WHEN 语文 >= 60 THEN '及格' ELSE '不及格' END AS 语文,CASE WHEN 数学>=80 THEN '优秀' WHEN 数学 >= 60 THEN '及格' ELSE '不及格' END AS 数学,CASE WHEN 英语>=80 THEN '优秀' WHEN 英语 >= 60 THEN '及格' ELSE '不及格' END AS 英语 FROM test;
      

  4.   

    那是笔误,end后面都是列的别名。
      

  5.   

    when  then   就能搞定了