读书人

请问材料统计的SQL语句

发布时间: 2012-03-02 14:40:28 作者: rapoo

请教材料统计的SQL语句?
板材入库表:
名称 长度 宽度 厚度 规格 单价 数量 入库日期
钢板 6 4 10 6*4*10 3600 10 2007-1-1
钢板 6 4 10 6*4*10 4000 20 2007-1-2

板材出库表
名称 长度 宽度 厚度 规格 单价 数量 出库日期
钢板 2 4 10 2*4*10 3600 1 2007-1-1
-------------------------------------
要得到以下报表:
剩余库存材料表
名称 长度 宽度 厚度 规格 单价 数量 盘库日期
钢板 6 4 10 6*4*10 3600 9 2007-1-2
钢板 4 4 10 4*4*10 3600 1 2007-1-2
钢板 6 4 10 6*4*10 4000 20 2007-1-2


[解决办法]
说说怎么计算的?
[解决办法]
先进先出?
[解决办法]
没有全部列出了字段,只列出了部分子段,你复制后再添加吧

if object_id( 't1 ') is not null --入库
drop table t1
go
create table t1 (name nvarchar(50),price smallmoney ,number int ,time datetime)
insert t1 select N '钢板 ' , 3600 , 10, '2007-1-1 '
union all select N '钢板 ', 4000, 20 , '2007-1-2 '
go


if object_id( 't2 ') is not null --出库
drop table t2
go
create table t2 (name nvarchar(50),price smallmoney ,number int ,time datetime)
insert t2 select N '钢板 ' , 3600 , 1, '2007-1-1 '
go
select * from t1
go
select * from t2
go
select name,price,
(select sum(tA.number) - isnull(sum(tB.number),0) from t2 as tB
where tB.price = tA.price) as number,time
from t1 as tA group by name,price,time
union all
select * from t2
order by time
[解决办法]
结构上还有点问题的。如:
钢板 6 4 10 6*4*10 3600 10 2007-1-2
本来是10的,在出库表中已经表明:
钢板64106*4*10360012007-1-1
而在板材裁减表中写的是:
钢板24102*4*10360012007-01-01
钢板44104*4*10360012007-01-01
,这里板材裁减表,就很难判断哪一行是出库的,哪一行是剩余的。与出库表中有点矛盾了。
哎!



[解决办法]
但你的出库体现在哪儿呢?就是那块已经剪下来的
[解决办法]
感觉表的设计与操作流程有点冲突,在[疑难问题]也有说过,希望楼主能看一下。
光这样的数据和这样的表结构是无法正确统计所要的结果。

读书人网 >SQL Server

热点推荐