示例如下:
--明细帐数据
CREATE TABLE tb(
ID int IDENTITY PRIMARY KEY,
Item varchar(10), --产品编号
Quantity int, --交易数量
Flag bit, --交易标志,1代表入库,0代表出库,这样可以有效区分退货(负数)
Date datetime) --交易日期
INSERT tb SELECT 'aa',100,1,'2005-1-1'
UNION ALL SELECT 'aa',90 ,1,'2005-2-1'
UNION ALL SELECT 'aa',55 ,0,'2005-2-1'
UNION ALL SELECT 'aa',-10,1,'2005-2-2'
UNION ALL SELECT 'aa',-5 ,0,'2005-2-3'
UNION ALL SELECT 'aa',200,1,'2005-2-2'
UNION ALL SELECT 'aa',90 ,1,'2005-2-1'
UNION ALL SELECT 'bb',95 ,1,'2005-2-2'
UNION ALL SELECT 'bb',65 ,0,'2005-2-3'
UNION ALL SELECT 'bb',-15,1,'2005-2-5'
UNION ALL SELECT 'bb',-20,0,'2005-2-5'
UNION ALL SELECT 'bb',100,1,'2005-2-7'
UNION ALL SELECT 'cc',100,1,'2005-1-7'
GO
--查询时间段定义
DECLARE @dt1 datetime,@dt2 datetime
SELECT @dt1='2005-2-1',@dt2='2005-2-10'
--查询
--统计时间段内无发生额的数据(如果这个不是查询需要的,去掉这段查询)
SELECT Item,
Date=CONVERT(char(10),@dt1,120),
Opening=SUM(CASE WHEN Flag=1 THEN Quantity ELSE -Quantity END),
[IN]=0,
[IN_Retrun]=0,
[OUT]=0,
[OUT_Return]=0,
Balance=SUM(CASE WHEN Flag=1 THEN Quantity ELSE -Quantity END)
FROM tb a
WHERE Date<@dt1 AND NOT EXISTS(
SELECT FROM tb WHERE Item=aItem AND Date>@dt1 AND Date<DATEADD(Day,1,@dt2))
GROUP BY Item
UNION ALL
--指定时间段内有交易发生的数据
SELECT Item,
Date=CONVERT(char(10),Date,120),
Opening=ISNULL((SELECT SUM(CASE WHEN Flag=1 THEN Quantity ELSE -Quantity END)
FROM tb WHERE Item=aItem AND Date<MIN(aDate)),0),
[IN]=ISNULL(SUM(CASE WHEN Flag=1 AND Quantity>0 THEN Quantity END),0),
[IN_Retrun]=ISNULL(SUM(CASE WHEN Flag=1 AND Quantity<0 THEN -Quantity END),0),
[OUT]=ISNULL(SUM(CASE WHEN Flag=0 AND Quantity>0 THEN Quantity END),0),
[OUT_Return]=ISNULL(SUM(CASE WHEN Flag=0 AND Quantity<0 THEN -Quantity END),0),
Balance=ISNULL((SELECT SUM(CASE WHEN Flag=1 THEN Quantity ELSE -Quantity END)
FROM tb WHERE Item=aItem AND Date<=MAX(aDate)),0)
FROM tb a
WHERE Date>=@dt1 AND Date<DATEADD(Day,1,@dt2)
GROUP BY CONVERT(char(10),Date,120),Item
ORDER BY Item,Date
/--结果
Item Date Opening IN IN_Retrun OUT OUT_Return Balance
---------- ---------------- -------------- ----------- ---------------- ----------- ------------------- -----------
aa 2005-02-01 100 180 0 55 0 225
aa 2005-02-02 225 200 10 0 0 415
aa 2005-02-03 415 0 0 0 5 420
bb 2005-02-02 0 95 0 0 0 95
bb 2005-02-03 95 0 0 65 0 30
bb 2005-02-05 30 0 15 0 20 35
bb 2005-02-07 35 100 0 0 0 135
cc 2005-02-01 100 0 0 0 0 100
--/
模板已为你发送:
XXX公司商品进、销、存(原材料进、耗、存)及利润核算管理报表(系统),带库存警戒设置!xls (121K)
工业企业材料物资进耗存管理报表系统(实例模板,内有报表 *** 作应用说明)xls
请注意查收,另发送相关资料若干,可参照应用
你应该是有如下的这些表和关系:
1、《商品目录表》或者叫商品编码表:包括 商品ID 商品的名称、规格、计量单位……其他特征描述……还有最为重要的 商品代码……
2、《商品入库单》 包括:入库单ID、入库单编号、入库日期、入库性质、备注及入库检验负责人等等信息
3、《商品入库表》包括:入库单ID、 商品ID 、入库数量、金额、备注 等等
4、《商品出库单》 包括 出库单ID、出库单编号、出库日期、出库部门、备注及出库负责人等相关信息……
5、《商品出库表》包括 出库单ID、商品ID、出库数量、 金额 、备注等等
关系是 :
1、《商品目录表》中的 商品ID 分别包含《商品入库表》《商品出库表》中的 商品ID 的所有记录……
2、《商品入库单》 中的 入库单ID 包含 《商品入库表》中的 入库单ID 的所有记录……
3、《商品出库单》中的 出库单ID 包含 《商品出库表》中的 出库单ID 的 所有记录……
你的库存表,通过 《商品目录表》《商品入库表》、《商品出库表》等这些表格的查询获得……如果是分期报表的话 就连带《商品入库单》、《商品出库单》这两个表 通过对 入出库日期进行条件设置 来完成相应的查询……
不知道能否帮到你……这看上去 比你的复杂了些,但是 会记录得的更加详细 、复合一般数据库记录信息的 管用方法……
以上就是关于怎么用sql商品库存明细表全部的内容,包括:怎么用sql商品库存明细表、Excel库存表格和进销存表格、我想用access做一张库存表,一张入库表,一张出库表,如何建立关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)