先用子查询SUM(ckhtsp.spdj),然后在联合

解决方案 »

  1.   

    SELECT ckhtsp.spbm, MAX(ckhtsp.spzj) AS spzj, MAX(ckhtsp.zwmc) AS zwmc, 
          MAX(ckhtsp.spgg) AS spgg, SUM(ckhtsp.spsl) AS spsl, 
    SUM(ckhtsp.spdj) AS spdj,   AVG(ckhtsp.spdj / ckhtsp.spsl) AS pjdj, 
    SUM(ckhtsp.spdj) / SUM(ckhtsp.spdj) AS xsb
    FROM ckht INNER JOIN
          ckhtsp ON ckht.hth = ckhtsp.hth
    GROUP BY ckhtsp.spbm
    ORDER BY ckhtsp.spbm
      

  2.   

    SELECT ckhtsp.spbm, MAX(ckhtsp.spzj) AS spzj, MAX(ckhtsp.zwmc) AS zwmc, 
          MAX(ckhtsp.spgg) AS spgg, SUM(ckhtsp.spsl) AS spsl, 
    SUM(ckhtsp.spdj) AS spdj,   AVG(ckhtsp.spdj / ckhtsp.spsl) AS pjdj, 
    sum(ckhtsp.spdj/tmp.spdj ) as xsb
    <<<SUM(ckhtsp.spdj / SUM(ckhtsp.spdj)) AS xsb>>>--->>怎么实现此功能啊
    FROM ckht a  -- 给一个别名
    join (select sum(spdj) as spdj from chktsp where hth = a.hth) tmp
    INNER JOIN ckhtsp ON ckht.hth = ckhtsp.hth
    GROUP BY spbm
    ORDER BY spbm