昨天问了一个遇零作出数错误的问题,大家给予了帮助,今天还是这个问题
现在的SQL语句是这么写的select sum(字段1),sum(字段2),sum(字段3),sum(字段4),cast(字段1/case when 字段2=0 THEN 1 ELSE 字段2 end as numeric(38,2))*100 as 字段5 from 表名字段5是字段1和字段2求出来的,字段1的值可能为0,字段2的值也可能为0;
现在这样的话要group by 字段1和字段2,这样数据就错误了,怎么能不聚合它俩求出字段5

解决方案 »

  1.   

    字段1/case when 字段2=0 THEN 1 ELSE 字段2 end-->case when 字段2=0 then 字段1 else 字段1/字段2 end
      

  2.   

    select sum(字段1),sum(字段2),sum(字段3),sum(字段4),
    cast( (case when 字段2=0 then 字段1 else 字段1/字段2 end) as numeric(38,2)) *100 as 字段5 
    from 表名
      

  3.   


    select sum(字段1),sum(字段2),sum(字段3),sum(字段4),sum(字段1)/sum(cast(case when 字段2=0 THEN 1 ELSE 字段2 end as numeric(38,2))*100) as 字段5 from 表名第五个字段没有写sum聚合函数
      

  4.   

    select sum(字段1),sum(字段2),sum(字段3),sum(字段4),
    cast( (case when 字段2=0 then 字段1 else 字段1/字段2 end) as numeric(38,2)) *100 as 字段5 
    from 表名 group by 字段1,字段2
      

  5.   

    可是我就想要一行记录,要是group by 会出来好多