不加累计查当日的(累计)都没问题,加了累计后查出数据不对,当日的和累计的都多出来了,求大神帮看看应该怎么改。
语句如下:
--查出当日数据正确
SELECT LEFT(nhm,4),COUNT(rcbh) AS 车数, SUM(jz * 0.001) AS 净重, SUM(zkzl * 0.001) AS 扣杂量, SUM(yfzk * 0.001) AS 应付蔗款, SUM(yfyf * 0.001) AS 应付运费, SUM(klx * 0.001) AS 扣利息, SUM(kbj * 0.001)
AS 扣本金
FROM guobang
where DateDiff(dd,pzsj,getdate())=0
GROUP BY LEFT(nhm,4)
--不加累计查当日的正常
SELECT LEFT(a.nhm, 4) AS 编码,b.xzmc AS 片区, c.xzmc AS 村委, COUNT(d.rcbh) AS 车数, SUM(d.jz * 0.001) AS 净重, SUM(d.zkzl * 0.001) AS 扣杂量, SUM(d.yfzk) AS 应付蔗款, SUM(d.yfyf) AS 应付运费,
SUM(d.klx) AS 扣利息, SUM(d.kbj) AS 扣本金
FROM nonghu AS a INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng
GROUP BY xzm, xzmc) AS b ON LEFT(a.nhm, 2) = b.xzm INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng AS XingZheng_1
GROUP BY xzm, xzmc) AS c ON LEFT(a.nhm, 4) = c.xzm LEFT JOIN
--当日数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang
WHERE (DATEDIFF(dd, pzsj, GETDATE()) = 0)) AS d ON a.nhm = d.nhm
GROUP BY LEFT(a.nhm, 4), b.xzmc, c.xzmc
--加了累计后查出的数据不对
SELECT LEFT(a.nhm, 4) AS 编码,b.xzmc AS 片区, c.xzmc AS 村委, COUNT(d.rcbh) AS 车数, SUM(d.jz * 0.001) AS 净重, SUM(d.zkzl * 0.001) AS 扣杂量, SUM(d.yfzk) AS 应付蔗款, SUM(d.yfyf) AS 应付运费,
SUM(d.klx) AS 扣利息, SUM(d.kbj) AS 扣本金, COUNT(e.rcbh) AS 累计车数, SUM(e.jz * 0.001) AS 累计净重, SUM(e.zkzl * 0.001) AS 累计扣杂量, SUM(e.yfzk) AS 累计应付蔗款, SUM(e.yfyf)
AS 累计应付运费, SUM(e.klx) AS 累计扣利息, SUM(e.kbj) AS 累计扣本金
FROM nonghu AS a INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng
GROUP BY xzm, xzmc) AS b ON LEFT(a.nhm, 2) = b.xzm INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng AS XingZheng_1
GROUP BY xzm, xzmc) AS c ON LEFT(a.nhm, 4) = c.xzm LEFT JOIN
--当日数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang
WHERE (DATEDIFF(dd, pzsj, GETDATE()) = 0)) AS d ON a.nhm = d.nhm LEFT JOIN
--累计数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang) AS e ON a.nhm = e.nhm
GROUP BY LEFT(a.nhm, 4), b.xzmc, c.xzmc
查询结果如下:
SELECT LEFT(a.nhm, 4) AS 编码,b.xzmc AS 片区, c.xzmc AS 村委, COUNT(d.rcbh) AS 车数, SUM(d.jz * 0.001) AS 净重, SUM(d.zkzl * 0.001) AS 扣杂量, SUM(d.yfzk) AS 应付蔗款, SUM(d.yfyf) AS 应付运费,
SUM(d.klx) AS 扣利息, SUM(d.kbj) AS 扣本金, COUNT(e.rcbh) AS 累计车数, SUM(e.jz * 0.001) AS 累计净重, SUM(e.zkzl * 0.001) AS 累计扣杂量, SUM(e.yfzk) AS 累计应付蔗款, SUM(e.yfyf)
AS 累计应付运费, SUM(e.klx) AS 累计扣利息, SUM(e.kbj) AS 累计扣本金
FROM nonghu AS a INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng
GROUP BY xzm, xzmc) AS b ON LEFT(a.nhm, 2) = b.xzm INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng AS XingZheng_1
GROUP BY xzm, xzmc) AS c ON LEFT(a.nhm, 4) = c.xzm LEFT JOIN
--当日数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang
WHERE (DATEDIFF(dd, pzsj, GETDATE()) = 0)) AS d ON a.nhm = d.nhm LEFT JOIN
--累计数据
(SELECT LEFT(nhm, 4) as nhm, sum(rcbh) as rcbh, sum(jz) as jz,sum(zkzl) as zkzl,sum(yfzk) as yfzk,sum(yfyf) as yfyf,sum(klx) as klx,sum(kbj) as kbj
FROM guobang group by LEFT(nhm, 4)) AS e ON LEFT(a.nhm, 4) = e.nhm
GROUP BY LEFT(a.nhm, 4), b.xzmc, c.xzmc
应该是这样
select 编码,片区, 村委, 车数,净重, 扣杂量, 应付蔗款, 应付运费, 扣利息, 扣本金, t2.rcbh AS 累计车数, t2.jz AS 累计净重, t2.zkzl AS 累计扣杂量, t2.yfzk AS 累计应付蔗款, t2.yfyf
AS 累计应付运费, t2.klx AS 累计扣利息, t2.kbj AS 累计扣本金
from
(SELECT LEFT(a.nhm, 4) AS 编码,b.xzmc AS 片区, c.xzmc AS 村委, COUNT(d.rcbh) AS 车数, SUM(d.jz * 0.001) AS 净重, SUM(d.zkzl * 0.001) AS 扣杂量, SUM(d.yfzk) AS 应付蔗款, SUM(d.yfyf) AS 应付运费,
SUM(d.klx) AS 扣利息, SUM(d.kbj) AS 扣本金
FROM nonghu AS a INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng
GROUP BY xzm, xzmc) AS b ON LEFT(a.nhm, 2) = b.xzm INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng AS XingZheng_1
GROUP BY xzm, xzmc) AS c ON LEFT(a.nhm, 4) = c.xzm LEFT JOIN
--当日数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang
WHERE (DATEDIFF(dd, pzsj, GETDATE()) = 0)) AS d ON a.nhm = d.nhm
GROUP BY LEFT(a.nhm, 4), b.xzmc, c.xzmc) as t
LEFT JOIN
--累计数据
(SELECT LEFT(nhm, 4) as nhm, COUNT(rcbh) as rcbh, sum(jz) * 0.001 as jz,sum(zkzl) * 0.001 as zkzl,sum(yfzk) as yfzk,sum(yfyf) as yfyf,sum(klx) as klx,sum(kbj) as kbj
FROM guobang group by LEFT(nhm, 4)) AS t2 ON LEFT(t1.nhm, 4) = t2.nhm
select 编码,片区, 村委, 车数,净重, 扣杂量, 应付蔗款, 应付运费, 扣利息, 扣本金, t2.rcbh AS 累计车数, t2.jz AS 累计净重, t2.zkzl AS 累计扣杂量, t2.yfzk AS 累计应付蔗款, t2.yfyf
AS 累计应付运费, t2.klx AS 累计扣利息, t2.kbj AS 累计扣本金
from
(SELECT LEFT(a.nhm, 4) AS 编码,b.xzmc AS 片区, c.xzmc AS 村委, COUNT(d.rcbh) AS 车数, SUM(d.jz * 0.001) AS 净重, SUM(d.zkzl * 0.001) AS 扣杂量, SUM(d.yfzk) AS 应付蔗款, SUM(d.yfyf) AS 应付运费,
SUM(d.klx) AS 扣利息, SUM(d.kbj) AS 扣本金
FROM nonghu AS a INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng
GROUP BY xzm, xzmc) AS b ON LEFT(a.nhm, 2) = b.xzm INNER JOIN
(SELECT xzm, xzmc
FROM XingZheng AS XingZheng_1
GROUP BY xzm, xzmc) AS c ON LEFT(a.nhm, 4) = c.xzm LEFT JOIN
--当日数据
(SELECT nhm, rcbh, jz, zkzl, yfzk, yfyf, klx, kbj
FROM guobang
WHERE (DATEDIFF(dd, pzsj, GETDATE()) = 0)) AS d ON a.nhm = d.nhm
GROUP BY LEFT(a.nhm, 4), b.xzmc, c.xzmc) as t
LEFT JOIN
--累计数据
(SELECT LEFT(nhm, 4) as nhm, COUNT(rcbh) as rcbh, sum(jz) * 0.001 as jz,sum(zkzl) * 0.001 as zkzl,sum(yfzk) as yfzk,sum(yfyf) as yfyf,sum(klx) as klx,sum(kbj) as kbj
FROM guobang group by LEFT(nhm, 4)) AS t2 ON LEFT(t.nhm, 4) = t2.nhm