关于月报表的问题(100分)

  • 主题发起人 主题发起人 siuping
  • 开始时间 开始时间
S

siuping

Unregistered / Unconfirmed
GUEST, unregistred user!
有三个表:
表A,表B,表C,分别代表仓存资料,入仓资料,出仓资料,有相同的字段"物料名称",现在想做一个月报表,格式如下:
物料名称 上月结存(表A) 本月入仓(表B) 本月出仓(表C) 本月结存
AA1 50 30 20
AA2 80 50 30
AA3 30 30
AA4 20 30 40 10
......
栏名为空表示它的表内没此物料名称,请高手给个思路.
 
无非就是多表查询
 
用sql的select语句不就可以了吗
 
我知道是多表查询,我用full join链接后
select a.物料名称,A.上月结存,B.入仓数,C.出仓数
from A表 full join B表
on A.物料名称=B.物料名称 join C表
on B.物料名称=C.物料名称

如果表A里没此种物料,而其它表有的话就会出现以下情况:
物料名称 上月结存(表A) 本月入仓(表B) 本月出仓(表C) 本月结存
null 50 30
物料名称为空,这肯定不行,
 
Select d.物料名称,A.上月结存,B.入仓数,C.出仓数
from
select a.物料名称,A.上月结存,B.入仓数,C.出仓数
from (Select 物料名称 from A表
Union Select 物料名称 from B表
Union Select 物料名称 from C表) d full join A表
on A.物料名称=B.物料名称 join (Select 物料名称 from A表
Union Select 物料名称 from B表
Union Select 物料名称 from C表) d full join B表
on D.物料名称=B.物料名称 join (Select 物料名称 from A表
Union Select 物料名称 from B表
Union Select 物料名称 from C表) d
on D.物料名称=C.物料名称
 
to Cjzhou:
我试过,出现"select 附近有语法错误'
(Select 物料名称 from A表 Union Select 物料名称 from B表 Union Select 物料名称 rom C表) d
这句是将三个表所有的物料编号全部集合起来.然后和A表,B表,C表链接,担句子中为何不同C表full join呢?
望指点!
 
楼主,我想你可能找错了方向,你要生成的表用一个简单的多表连接查询就OK了,至于你说的B,C 中有的物品在A 中没有,这可能吗?如果是这样你生成的报表还有意义吗?
所以解决这样问题是你在入单时包括出仓、入仓等修改数据仓的操作要保持数据的一至性,也就是在一个事务中处理。别把问题留在报表时解决。
只有一种情况就是出仓数与入仓数相等,那么你的A表中就没有这样物品了但你的报表仍要反映出仓和入仓数,那我觉得最好的办法是设一个物品编码库,以编码库为主来连接其它库组成一个多表查询。
我的回答可能不是你想要的。[:D]
 
多人接受答案了。
 
后退
顶部