select 
           tk_pici,
           tk_kechen,
           sum(case when tk_chengji='合格'then 1 else 0 end) as tj
from #TEMP 
group by pici,kechen

解决方案 »

  1.   


    select 
               tk_pici,
               tk_kechen,
               sum(case when tk_chengji='合格'then 1 else 0 end) as expr1002
    from b_tongkao  
    group by  tk_pici, tk_kechen
      

  2.   

    access 不支持case 结构,关键是我觉得我鞋的代码没什么问题
      

  3.   

    SELECT tk_pici,tk_kecheng
    ,(select count(*) from tb_tongkao AS T2
    WHERE T1.tk_pici=T2.tk_pici
    AND  T1.tk_kecheng=T2.tk_kecheng
    AND tk_chengji='合格')
    FROM tb_tongkao AS T1
    --应该是这样,不过子查询不怎么好--CASE 没有 就用 SWITCH替代
    select 
               tk_pici,
               tk_kechen,
               SUM(SWITCH(
               tk_chengji='合格',1,
               True,0))as expr1002
    from b_tongkao  
    group by  tk_pici, tk_kechen
      

  4.   

    嗯,实现想要的结果了,但是不太明白为什么一定要用case 或者 switch结构,我写的子查询为什么不按照groupby进行分组,而是显示所有的结果,即(select  count(*)..... )的结果
      

  5.   

    SELECT tk_pici,tk_kecheng
        ,(select count(*) from tb_tongkao AS T2
            WHERE T1.tk_pici=T2.tk_pici
                AND  T1.tk_kecheng=T2.tk_kecheng
                AND
     tk_chengji='合格')
    FROM tb_tongkao AS T1你的子查询少了个关键的东西
      

  6.   

    嗯,嗯,转过弯来了,原来的子查询跟后面的groupby没有关联~~