select ff=f1+f2,fff=(f1+f2)*2 from table

解决方案 »

  1.   

    我的SQL:
    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          合格数 = SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END), 
          不合格数 = SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END), MIN(检测结果) 最小值, MAX(检测结果) 最大值,合格率=(合格数/检测项数)  --就是这一行出错:"列名'合格数'无效"FROM 检测结果
    GROUP BY 项目编号
      

  2.   

    select a.项目编号,a.检测项数,isnull(b.合格数,0) 合格数,isnull(c.不合格数,0) 不合格数,b.合格数/a.检测项数 合格率
    from (select 项目编号, COUNT(项目编号) 检测项数 FROM 检测结果 GROUP BY 项目编号) a
    left outer join (select 项目编号,count(*) 合格数  from 检测结果 where 判定结果 = '合格' GROUP BY 项目编号) b 
     on a.项目编号=b.项目编号
    left outer join (select 项目编号,count(*) 不合格数  from 检测结果 where 判定结果 = '不合格' GROUP BY 项目编号) c 
     on a.项目编号=c.项目编号
      

  3.   

    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) 合格数  , 
          SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END) 不合格数 , MIN(检测结果) 最小值, MAX(检测结果) 最大值,合格率=(合格数/检测项数)  --就是这一行出错:"列名'合格数'无效"FROM 检测结果
    GROUP BY 项目编号
      

  4.   

    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) 合格数  , 
          SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END) 不合格数 , MIN(检测结果) 最小值, MAX(检测结果) 最大值,合格率=(SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) /检测项数)  
    FROM 检测结果
    GROUP BY 项目编号
      

  5.   

    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) 合格数  , 
          SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END) 不合格数 , MIN(检测结果) 最小值, MAX(检测结果) 最大值,合格率=(SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) /COUNT(项目编号) )  
    FROM 检测结果
    GROUP BY 项目编号
      

  6.   

    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) 合格数  , 
          SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END) 不合格数 , MIN(检测结果) 最小值, MAX(检测结果) 最大值,SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) /COUNT(项目编号)   合格率
    FROM 检测结果
    GROUP BY 项目编号
      

  7.   

    首先多谢各位的指导
     to sky_blue(老衲) :
    按你最后这次的SQL,合格率不是0就是1,????to  emayongxiang(马) :
    你的方法返回跟sky_blue(老衲)一样:合格率不是0就是1,????
      

  8.   

    转换一下数据类型就可以了
    SELECT 项目编号, COUNT(项目编号) 检测项数, 
          SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) 合格数  , 
          SUM(CASE WHEN 判定结果 = '不合格' THEN 1 WHEN 判定结果 = '合格' THEN
           0 ELSE 0 END) 不合格数 , MIN(检测结果) 最小值, MAX(检测结果) 最大值,1.00*SUM(CASE WHEN 判定结果 = '合格' THEN 1 WHEN 判定结果 = '不合格' THEN 0
           ELSE 0 END) /COUNT(项目编号)   合格率
    FROM 检测结果
    GROUP BY 项目编号
      

  9.   

    谢谢两位:sky_blue(老衲) ,emayongxiang(马),加分!