涉及表结构如下:
销售主表:销售单号 bill_no,销售日期 bill_date
销售子表:销售单号 bill_no,产品编码 gods_code,销售数量 gods_amou
产品资料表:产品编码 gods_code,产品类型 gods_kind
现在要用一条SQL语句实现:统计一段时间内,某一类型产品的销售数量
谢谢!
销售主表:销售单号 bill_no,销售日期 bill_date
销售子表:销售单号 bill_no,产品编码 gods_code,销售数量 gods_amou
产品资料表:产品编码 gods_code,产品类型 gods_kind
现在要用一条SQL语句实现:统计一段时间内,某一类型产品的销售数量
谢谢!
where B.bill_no=A.bill_no and C.gods_code=B.gods_code
select bill_no from sell_main where bill_date between @BeginDate and @EndDate)把三个参数替换成你的数据
to:lesstif()
你的SQL语句,有少少问题,我用的是ACCESS数据库,好象按照SQL语法,凡SQL语句中有累计函数(如:SUM...)的好象要用到分组GROUP BY,以前碰到类似问题,
还有就是我的问题的表达不是很清楚,我不需要求和计算,这里的统计应该改成‘查找出’或‘列出’
to:helodd(可爱)
老兄,你的也有问题哟,这样的统计是笛卡儿乘积,没有实际意义,本来很少的记录统计出来会翻几倍,几十倍哟 还有,我的查询里面还要显示销售主表的客户编码,comp_code
我用了如下代码:
Sql.Clear;
Sql.Add('select distinct outmain.comp_code,outgoods.bill_no,outgoods.gods_code,outgoods.unit_pric,outgoods.sub_amou ');
Sql.Add(' from outmain, outgoods, goods where goods.gods_kind=:gods_Kind and outmain.bill_date between :Date1 and :Date2 ');
Parameters.ParamByName('date1').Value:=strtodate(datetostr(dp1.Date)) ;
Parameters.ParamByName('date2').Value:=strtodate(datetostr(dp2.Date)) ;
Parameters.ParamByName('gods_kind').Value:=trim(combobox5.Text) ;
Open;
显示出来的数据翻了一倍,用了distinct 也没用,还有商品类型过滤没起作用,
请各位赐教,我觉得可能用到左联结,可我不太熟悉那玩意儿
where 表一的条件 = 表二的条件 and 表二的条件=表三的条件