日期:2014-05-17  浏览次数:21130 次

关于有sql语句统计库存
我用asp+access做库存统计,我不知道怎么样写
要求显示 材料名称,计量单位,型号规格,入库总数,出库总数,库存量

我的表结构是这样的
入库表 编号,入库编号,材料名称,计量单位,型号规格 入库数量,入库日期,备注
出库表
编号,出库编号,材料名称,计量单位,型号规格 出库数量,出库日期,备注
2.还有最好还能够用sum函数进行按日期进行对每条出入库记录进行统计,sql语句怎么写

------解决方案--------------------
1,首先你的数据库设计不太合理,这个稍后再细说。
如果就按在你的现在数据库表,
我建议先建一个[入库视图],
select [材料名称],[计量单位],[型号规格],sum([入库数]) as [入库总数] from 
[入库表] group by [材料名称],[计量单位],[型号规格]

再建一个[出库视图],
select [材料名称],[计量单位],[型号规格],sum([出库数]) as [出库总数] from 
[出库表] group by [材料名称],[计量单位],[型号规格]

然后,在这两个表的基础在建第三个[出入库视图]

select [材料名称],[计量单位],[型号规格],[入库总数],[出库总数],([入库总数]-[出库总数]) as [库存量]
from [出库视图] inner join [入库视图] on
[出库视图].[材料名称]=[入库视图].[材料名称] and
[出库视图].[型号规格]=[入库视图].[型号规格] and
[出库视图].[计量单位]=[入库视图].[计量单位]

2,不是很明白你的意思,是按日期统计,每天多少出库总数,入库总数?
如果是这样,类似1的解决方案就行了



------解决方案--------------------
我刚才说到你的数据库不合理,现在我详细说一下为什么
看你的出入库表,编号(产品编号吗?),材料名称,计量单位,型号规格 这些在两个表中,以及一个表的多条记录中明显是重复的,而且出入库表结构完全相同,
所以我觉得应该建的两个表是,产品表,和库存出入表,
产品表字段:产品编号,材料名称,计量单位,型号规格
库存出入表字段:编号,产品编号,数量,日期
其中数量可以为正,表示入库,数量为负,表示出库。产品编号,则是外健,和产品表关联。

如果这样设计,数据存储量要少很多,而且程序更新方便,写统计视图也方便

另外说一下,关于库存量,只用一个产品的在库存表的入出总额之差来表示这个产品库存量,不是一个好主意,
因为一是如果出入库记录有异常,则库存量也变成错误的了,二是由于库存量可能会经常查询,用统计的结果来表示显示效率比较低。我通常的做法是在产品表里再加一个库存字段,每次出入库的时候,除了记录出入库表,还要更新产品表。这样虽说更新维护上麻烦了一点,但可靠性提高不少(两个表同时出错的可能性比较低),而且库存的查询效率提高了不少。