Office中国论坛/Access中国论坛

标题: 帮我把以下sql语句转成Access的 [打印本页]

作者: mmxmmx    时间: 2009-3-16 11:24
标题: 帮我把以下sql语句转成Access的
要求通过查询 “产品发货表”,“产品退货表”,“产品销售表”,实现以下字段:

店铺名称,产品编号,类别,期初发货,期初退货,期初销售,期初库存,本期发货,本期退货,本期销售,本期库存



select a.店铺名称,a.产品编号,期初发货,期初退货,期初销售,期初发货-期初退货-期初销售 as  期初库存,本期发货,本期退货,本期销售,期初发货-期初退货-期初销售+本期发货-本期退货-本期销售 as 本期库存 from
(
(select 店铺名称,产品编号,sum(期初发货) 期初发货,sum(本期发货) 本期发货  from (
select 店铺名称,产品编号,(case  when 发货日期 <'2009-01-01' then 发货数量 else 0 end) 期初发货,(case  when 发货日期 between '2009-01-01' and '2009-03-15' then 发货数量 else 0 end) 本期发货 from 产品发货表
) b_b group by  店铺名称,产品编号 )
)  b
,
(select 店铺名称,产品编号,sum(期初销售) 期初销售,sum(本期销售) 本期销售  from (
select 店铺名称,产品编号,(case  when 销售日期 <'2009-01-01' then 销售数量 else 0 end) 期初销售,(case  when 销售日期 between '2009-01-01' and '2009-03-15' then 销售数量 else 0 end) 本期销售 from 产品销售表
) a_a group by  店铺名称,产品编号 ) a
,
(
select 店铺名称,产品编号,sum(期初退货) 期初退货,sum(本期退货) 本期退货  from (
select 店铺名称,产品编号,(case  when 退货日期 <'2009-01-01' then 退货数量 else 0 end) 期初退货,(case  when 退货日期 between '2009-01-01' and '2009-03-15' then 退货数量 else 0 end) 本期退货 from 产品退货表
) c_c group by  店铺名称,产品编号 )  c


where a.店铺名称=b.店铺名称 and a.店铺名称=c.店铺名称 and a.产品编号=b.产品编号 and a.产品编号=c.产品编号
作者: todaynew    时间: 2009-3-16 11:26
在查询的sql视图中写入就可以了
作者: mmxmmx    时间: 2009-3-16 11:48
2# todaynew

现在就是在sql试图里写,可是我不懂那些代码的个别意思。
请指教啊
作者: todaynew    时间: 2009-3-16 11:57
2# todaynew  

现在就是在sql试图里写,可是我不懂那些代码的个别意思。
请指教啊
mmxmmx 发表于 2009-3-16 11:48


不懂没关系,只要结果对了就行,呵呵。
作者: mmxmmx    时间: 2009-3-16 12:55
那些代码在Access里不能执行,提示错误啊
作者: ty_1029    时间: 2009-3-16 14:17
代码太长了,还要分行~
好象在'2009-01-01' 前后要加 # 号.好象是,看牛人来做~~
作者: todaynew    时间: 2009-3-16 16:11
那些代码在Access里不能执行,提示错误啊
mmxmmx 发表于 2009-3-16 12:55

没看出来你打算执行什么,选择查询就是窗体的数据源而已。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3