|
仓库里有某商品NN个,急着卖出去
业务员们很能干,找来了一堆客户,得到了一堆数量不等的订单。
订单合计数量不小,先给谁?,先来的先给,有多少先给多少
这种提货单,用vba来完成很简单。可现在各种数据都在数据库里,就得用sql语句来完成了
类似问题困扰了我很长时间,这次算是写成功了,拿出来与大家分享
sql语句部分思路如下:
sqlA = "select 商品,sum(数量) as 数量,sum(数量*单价)/sum(数量) as 单价 from [库存$] GROUP BY 商品"
汇总库存表的各类商品的总数量
sqlB = "select b.id,b.客户,b.商品,b.数量,(select sum(a.数量) from [订单$] a where a.id<=b.id AND a.商品=b.商品) as c from [订单$] b"
订单表的查询结果里增加一个字段,该字段是不同商品种类连续的累加
sqlC = "select 客户,a1.商品,a1.数量,c,a2.数量,单价,a1.数量-c+a2.数量 as d from (" & sqlB & ") a1,(" & sqlA & ") a2 where a1.商品=a2.商品"
用"各类库存商品的总数量"和"不同商品种类连续的累加"计算出每种商品的实际可供给数量
sql = "select 客户,a1.商品,iif(a1.数量<=d,a1.数量,d) as 数量,单价,数量*单价 as 金额 from(" & sqlC & ") where d>0"
这句是上句的延续,排除掉所有无货可给的记录
另一种用法: 导入外部数据+SQL语句,不用写代码。具体操作下载附件3,按照帖子的图示操作
[ 本帖最后由 HHAAMM 于 2010-7-18 13:26 编辑 ] |
|