就是我有两个表YPrk入库和YPck出库,现在YPrk表中同一种商品可能有N个,我现在的代码是这样的: select z.商品大类,z.商品名称,z.商品规格,z.商品编码,(sum(z.出货数量))as 累计出货,(sum(z.合计))as 累计销售金额,sum((z.销售单价-z1.进货单价)*(z.出货数量))as 累计利润 from Ypck z,Yprk z1 where (z.商品规格=z1.商品规格)and(z.商品编码=z1.商品编码) group by z.商品大类,z.商品名称,z.商品规格,z.商品编码 这样的查询得出的结果中:累计出货、累计销售金额,累计利润 会是正常值的N倍,这个怎么解决呀
改为
from Ypck z,(select ... from Yprk group by ...) z1....
多个表关联的话,这样:
select * from YPck z inner join (select distinct * from YPrk where …… ) z1
on (z.编码=z1.编码 and z.规格=z1.规格 and z.某字段=z1.某字段)
where …… ……
select ycrk.商品大类,..,(sum(ycrk.出货数量))as 累计出货,(sum(ycrk.合计))as 累计销售金额,sum((ycrk.销售单价-aa.进货单价)*(ycrk.出货数量))as 累计利润 from (select ycrk.商品编码,ypck.进货单价 from ycrk left join ypck on ...)as aa left join ycrk ........中间可能代码不太准确,不过思路就这样,我也是前两天刚遇到这个问题,自己就想到这个解决办法,就是在FROM子句里让另一个有重复的表给他按另一个表搞成唯一性,达到和另一个表的一对一关系,省略号部分按你代码填进去就行了
select z.商品大类,z.商品名称,z.商品规格,z.商品编码,(sum(z.出货数量))as 累计出货,(sum(z.合计))as 累计销售金额,sum((z.销售单价-z1.进货单价)*(z.出货数量))as 累计利润
from Ypck z,
(select t.商品规格,t.商品编码,t.进货单价 from Yprk t group by t.商品规格,t.商品编码,t.进货单价) z1
where (z.商品规格=z1.商品规格)and(z.商品编码=z1.商品编码) group by z.商品大类,z.商品名称,z.商品规格,z.商品编码
没有测试,楼主可以按这个思路试一下。