SELECT a.fylb, SUM(a.jhje) AS jhje, SUM(b.dr1) AS dr1, SUM(a.jhje) - SUM(b.dr1) 
      AS Expr1
FROM zjjhmx a LEFT OUTER JOIN
      zjjhls b ON a.fylb = b.gsfy AND b.yf = '3'
WHERE (a.jhyf = '3') AND (a.gslb = '支出类')
GROUP BY a.fylb

解决方案 »

  1.   

    将 and b.yf='3'放到where语句中
      

  2.   

    SELECT a.fylb, SUM(a.jhje) AS jhje, SUM(b.dr1) AS dr1, SUM(a.jhje) - SUM(b.dr1) 
          AS Expr1
    FROM zjjhmx a LEFT OUTER JOIN
          zjjhls b ON a.fylb = b.gsfy AND b.yf = a.jhyf 
    WHERE (a.jhyf = '3') AND (a.gslb = '支出类')
    GROUP BY a.fylb
      

  3.   

    SELECT a.fylb, SUM(isnull(a.jhje,0)) AS jhje, SUM(isnull(b.dr1,0)) AS dr1, SUM(isnull(a.jhje,0)) - SUM(isnull(b.dr1,0)) 
          AS Expr1
    FROM zjjhmx a LEFT JOIN
          zjjhls b ON a.fylb = b.gsfy AND b.yf = '3'
    WHERE (a.jhyf = '3') AND (a.gslb = '支出类')
    GROUP BY a.fylb
      

  4.   

    SELECT a.fylb, SUM(isnull(a.jhje,0)) AS jhje, SUM(isnull(b.dr1,0)) AS dr1, SUM(isnull(a.jhje,0)) - SUM(isnull(b.dr1,0)) 
          AS Expr1
    FROM (select * from zjjhls where jhyf='3' and gslb='支出类') a
          LEFT JOIN
          (select * from zjjhls where yf='3' ) 
    b ON a.fylb = b.gsfy
    GROUP BY a.fylb
      

  5.   

    多谢大家,我已换另一种方式查询,如下:
    SELECT fylb, SUM(jhje) AS jhje, SUM(dr1) AS dr1, SUM(jhje) - SUM(dr1) AS syje
    FROM (SELECT SUM(jhje) jhje, 0 dr1, fylb
            FROM zjjhmx a
            GROUP BY fylb
            UNION
            SELECT 0 jhje, SUM(dr1) dr1, gsfy AS fylb
            FROM zjjhls b
            GROUP BY gsfy) DERIVEDTBL
    GROUP BY fylb