--下面的仅供参考:(转)--数据测试环境 create table 物料明细表(物料ID varchar(6),名称 varchar(10),规格 varchar(10),颜色 varchar(10),单位 varchar(10),所属类别 varchar(10)) insert into 物料明细表 select 'A-001','皮纸','20×30×50','红','张','纸' union all select 'B-002','磁铁','20×10×50','','块','五金'create table 进仓主表 (进仓ID varchar(20),供应商ID varchar(10),进仓日期 datetime,原凭证号 varchar(10),入库类型 int) insert into 进仓主表 select 'J-20031015-001','SA001','2003-10-15','123456',1 union all select 'J-20031015-002','SA002','2003-10-15','123457',1 union all select 'J-20031017-001','SA002','2003-10-17','123456',2create table 进仓明细表 (进仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2)) insert into 进仓明细表 select 'J-20031015-001','A-001',200 union all select 'J-20031015-002','B-002',99 union all select 'J-20031017-001','A-001',150.5create table 出仓主表 (出仓ID varchar(20),部门ID varchar(10),领料日期 datetime,领料单号 varchar(10),出库类型 varchar(1)) insert into 出仓主表 select 'C-20031015-001','Dept_P','2003-10-15','1111111','P' union all select 'C-20031016-001','Dept_P','2003-10-16','1111112','P'create table 出仓明细表 (出仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2)) insert into 出仓明细表 select 'C-20031015-001','A-001',50 union all select 'C-20031016-001','A-001',50 go--为数据处理添加视图 create view qry进仓单 as select b.物料ID,a.进仓日期,进仓数量=sum(b.数量) from 进仓主表 a join 进仓明细表 b on a.进仓ID=b.进仓ID group by b.物料ID,a.进仓日期go create view qry出仓单 as select b.物料ID,出仓日期=a.领料日期,出仓数量=sum(b.数量) from 出仓主表 a join 出仓明细表 b on a.出仓ID=b.出仓ID group by b.物料ID,a.领料日期go create view qry进出记录 as select 物料ID=isnull(a.物料ID,b.物料ID) ,a.进仓日期,进仓数量=sum(a.进仓数量) ,b.出仓日期,出仓数量=sum(b.出仓数量) ,日期=isnull(a.进仓日期,b.出仓日期) from qry进仓单 a full join qry出仓单 b on a.物料ID=b.物料ID and a.进仓日期=b.出仓日期 group by isnull(a.物料ID,b.物料ID),a.进仓日期,b.出仓日期,isnull(a.进仓日期,b.出仓日期) go--进出记录表 select a.* ,进仓日期=convert(varchar(10),b.进仓日期,120),b.进仓数量 ,出仓日期=convert(varchar(10),b.出仓日期,120),b.出仓数量 ,当前库存=isnull((select sum(进仓数量) from qry进仓单 where 物料ID=a.物料ID and 进仓日期<=b.日期),0) -isnull((select sum(出仓数量) from qry出仓单 where 物料ID=a.物料ID and 出仓日期<=b.日期),0) from 物料明细表 a left join qry进出记录 b on a.物料ID=b.物料ID order by a.物料ID,b.日期--当前库存表 select a.*,b.当前库存 from 物料明细表 a left join ( select 物料ID,当前库存=isnull(sum(进仓数量),0)-isnull(sum(出仓数量),0) from qry进出记录 group by 物料ID )b on a.物料ID=b.物料ID order by a.物料ID
create table 物料明细表(物料ID varchar(6),名称 varchar(10),规格 varchar(10),颜色 varchar(10),单位 varchar(10),所属类别 varchar(10))
insert into 物料明细表
select 'A-001','皮纸','20×30×50','红','张','纸'
union all select 'B-002','磁铁','20×10×50','','块','五金'create table 进仓主表 (进仓ID varchar(20),供应商ID varchar(10),进仓日期 datetime,原凭证号 varchar(10),入库类型 int)
insert into 进仓主表
select 'J-20031015-001','SA001','2003-10-15','123456',1
union all select 'J-20031015-002','SA002','2003-10-15','123457',1
union all select 'J-20031017-001','SA002','2003-10-17','123456',2create table 进仓明细表 (进仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2))
insert into 进仓明细表
select 'J-20031015-001','A-001',200
union all select 'J-20031015-002','B-002',99
union all select 'J-20031017-001','A-001',150.5create table 出仓主表 (出仓ID varchar(20),部门ID varchar(10),领料日期 datetime,领料单号 varchar(10),出库类型 varchar(1))
insert into 出仓主表
select 'C-20031015-001','Dept_P','2003-10-15','1111111','P'
union all select 'C-20031016-001','Dept_P','2003-10-16','1111112','P'create table 出仓明细表 (出仓ID varchar(20),物料ID varchar(6),数量 decimal(20,2))
insert into 出仓明细表
select 'C-20031015-001','A-001',50
union all select 'C-20031016-001','A-001',50
go--为数据处理添加视图
create view qry进仓单
as
select b.物料ID,a.进仓日期,进仓数量=sum(b.数量)
from 进仓主表 a join 进仓明细表 b on a.进仓ID=b.进仓ID
group by b.物料ID,a.进仓日期go
create view qry出仓单
as
select b.物料ID,出仓日期=a.领料日期,出仓数量=sum(b.数量)
from 出仓主表 a join 出仓明细表 b on a.出仓ID=b.出仓ID
group by b.物料ID,a.领料日期go
create view qry进出记录
as
select 物料ID=isnull(a.物料ID,b.物料ID)
,a.进仓日期,进仓数量=sum(a.进仓数量)
,b.出仓日期,出仓数量=sum(b.出仓数量)
,日期=isnull(a.进仓日期,b.出仓日期)
from qry进仓单 a full join qry出仓单 b
on a.物料ID=b.物料ID and a.进仓日期=b.出仓日期
group by isnull(a.物料ID,b.物料ID),a.进仓日期,b.出仓日期,isnull(a.进仓日期,b.出仓日期)
go--进出记录表
select a.*
,进仓日期=convert(varchar(10),b.进仓日期,120),b.进仓数量
,出仓日期=convert(varchar(10),b.出仓日期,120),b.出仓数量
,当前库存=isnull((select sum(进仓数量) from qry进仓单 where 物料ID=a.物料ID and 进仓日期<=b.日期),0)
-isnull((select sum(出仓数量) from qry出仓单 where 物料ID=a.物料ID and 出仓日期<=b.日期),0)
from 物料明细表 a left join qry进出记录 b on a.物料ID=b.物料ID
order by a.物料ID,b.日期--当前库存表
select a.*,b.当前库存
from 物料明细表 a left join (
select 物料ID,当前库存=isnull(sum(进仓数量),0)-isnull(sum(出仓数量),0) from qry进出记录 group by 物料ID
)b on a.物料ID=b.物料ID
order by a.物料ID