SELECT bkcx AS 报考车型
  ,COUNT(*) AS 报考人数
  ,注册人数=sum(case zt when 1 then 1 else 0 end)
  ,未注册人数=sum(case zt when 0 then 1 else 0 end)
  ,SUM(ccjfje + ccbjje + zcbjje) AS 交费金额
  ,SUM(jfjmje) AS 减免费用
FROM dbo.ds_ajj_student
GROUP BY bkcx

解决方案 »

  1.   

    SELECT bkcx AS 报考车型, COUNT(*) AS 报考人数, SUM(ccjfje + ccbjje + zcbjje) AS 交费金额, SUM(jfjmje) AS 减免费用,sum(case zt when 1 then 1 else 0 end ) AS 注册人数,
    sum(case zt when 0 then 1 else 0 end ) AS 未注册人数
    FROM dbo.ds_ajj_student
    GROUP BY bkcx
      

  2.   

    我开始为了描述简单,说注册是1,未注册是0。其实我的注册表示“在训”,未注册是“报考”上面回答得很好,但case不能是varchar的值,请问怎么办?
      

  3.   

    --谁说不能.直接用:SELECT bkcx AS 报考车型
      ,COUNT(*) AS 报考人数
      ,注册人数=sum(case zt when '在训' then 1 else 0 end)
      ,未注册人数=sum(case zt when '报考' then 1 else 0 end)
      ,SUM(ccjfje + ccbjje + zcbjje) AS 交费金额
      ,SUM(jfjmje) AS 减免费用
    FROM dbo.ds_ajj_student
    GROUP BY bkcx
      

  4.   

    当我问了这个问题之后,我感到非掌后悔(怕你笑我菜)。zjcxc非常谢谢你的帮助,我能加你到我的QQ吗?如果可以请留下你的QQ号。
      

  5.   

    --我不用QQ
    SELECT bkcx AS 报考车型
      ,COUNT(*) AS 报考人数
      ,注册人数=sum(case when zt<>'报考' then 1 else 0 end)
      ,未注册人数=sum(case zt when '报考' then 1 else 0 end)
      ,SUM(ccjfje + ccbjje + zcbjje) AS 交费金额
      ,SUM(jfjmje) AS 减免费用
    FROM dbo.ds_ajj_student
    GROUP BY bkcx