大家请帮看一下,这条SQL为什么SUM()的结果不正确???

Description of your first forum.

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子|wnxingyi| » 星期一, 2004年1月12日 11:39


小弟有如下一条SQL语句,将两个表联合统计,但统计出来的XL、OXL的结果和数据表中实
际统计的结果不同,大约相差大了一倍,请指教,我用的是ACCESS2000的数据库。
adoquery2.SQL.Add('select a.编号,SUM(a.数量) AS XL,SUM(b.数量) as OXL From 仓单_body a Left join 出仓_body b on a.编号=b.编号 group by a.编号');
 
 
 

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子yczzg » 星期一, 2004年1月12日 11:50


select t.编号,SUM(t.数量) AS XL,SUM(t.数量) as OXL
from
((select 编号,SUM(数量) AS XL,OXL=0
 From 仓单_body
 group by 编号)
union all
(select 编号,XL=0,SUM(b.数量) as OXL
 From 出仓_body b
))t
group by t.编号  
 
 
 

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子jackchin » 星期一, 2004年1月12日 12:20


楼上正确,关键是 Left Join 可能造成 a,b 有多行匹配的情况
例如
TableA                TableB  
Id   Val              Id  Val
---------             ----------
1    100              1   200
2    200              1   400
那么,
select A.ID, A.Val as AV, B.VAL as BV from TableA A
left join TableB B on A.ID = B.ID
结果返回
ID  AVAL  BVAL
---------------------
1   100   200
1   100   400
2   200  
 
 
 

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子|wnxingyi| » 星期一, 2004年1月12日 12:26


我试用了YCZZG的方法,但出现JOIN错误的提示。是否该方法不适用于ACCESS2000数据库?
如果是的话,点搞???
 
 
 

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子NewLearner » 星期一, 2004年1月12日 12:32


select a.编号,SUM(a.数量) AS XL,SUM(b.数量) as OXL
From 仓单_body a,出仓_body b
where a.编号=b.编号 group by a.编号
 
 
 

大家请帮看一下,这条SQL为什么SUM()的结果不正确???

帖子|wnxingyi| » 星期三, 2004年1月14日 09:43


jackchin的分析是正确的,但应该如何写有关语句????