select * (select ((case when 数学 is not null)+ (case when 语文 is not null)+(case when 英语 is not null))as 总分,数学,语文,英语 from 分数表 ) from 总分<180 这个查询可不可以简化一下 条件如上。最好能不用嵌套直接查。请搞手解决一下!

解决方案 »

  1.   

    select (NVL(数学, 0) +  NVL(语文, 0) +  NVL(英语, 0)) AS 总分, 数学,语文,英语
    FROM 分数表 
    WHERE (NVL(数学, 0) +  NVL(语文, 0) +  NVL(英语, 0)) < 180
      

  2.   

    你写的这个Sql已经很简化了。哈哈select ((case when 数学 is not null) + (case when 语文 is not null) +
           (case when 英语 is not null)) as 总分,数学,语文,英语
      from 分数表)
     where ((case when 数学 is not null) + (case when 语文 is not null) +
           (case when 英语 is not null)) > 180
      

  3.   

    select ((case when 数学 is not null) + (case when 语文 is not null) +
           (case when 英语 is not null)) as 总分,数学,语文,英语
      from 分数表
     where ((case when 数学 is not null) + (case when 语文 is not null) +
           (case when 英语 is not null)) > 180
    不小心,多了一个括号
      

  4.   

    楼主的本意是否是想找出3课总成绩低于180分的学科成绩和总成绩?
    SELECT NVL(数学,0)+NVL(语文,0)+NVL(英语,0)  总分,数学,语文,英语
    FROM 分数表
    WHERE NVL(数学,0)+NVL(语文,0)+NVL(英语,0)  < 180