
把问题简化了说
--入库数(一个sql从入库表中按天分组汇总统计出来的)
日期 当天入库
--出库数据(一个sql从出库表中按天分组统计出来的)
日期 当天出库
--求下面的结果
------解决方案--------------------------------------------------------SQL code USE TEMPDB GO IF OBJECT_ID('TB_IN') IS NOT NULL DROP TABLE TB_IN IF OBJECT_ID('TB_OUT') IS NOT NULL DROP TABLE TB_OUT GO CREATE TABLE TB_IN( IN_DATE DATETIME ,TOTAL INT ) CREATE TABLE TB_OUT( OUT_DATE DATETIME ,TOTAL INT ) INSERT INTO TB_IN SELECT '2012-02-20', 1000 UNION ALL SELECT '2012-02-22', 1500 INSERT INTO TB_OUT SELECT '2012-02-20', 500 UNION ALL SELECT '2012-02-21', 300 UNION ALL SELECT '2012-02-22', 500 UNION ALL SELECT '2012-02-24', 400 GO ;WITH MU AS ( SELECT ,ROW_NUMBER() OVER(ORDER BY CHANGE_DATE,CASE WHEN TYPE='入库' THEN 1 ELSE 2 END) AS ROW FROM ( SELECT IN_DATE AS CHANGE_DATE,TOTAL,'入库' AS TYPE FROM TB_IN UNION ALL SELECT OUT_DATE,0-TOTAL,'出库' AS TYPE FROM TB_OUT ) T ) ,MU2 AS ( SELECT ,TOTAL AS [库存] FROM MU WHERE ROW=1 UNION ALL SELECT T1,T2[库存]+T1TOTAL FROM MU T1 INNER JOIN MU2 T2 ON T1ROW=T2ROW+1 ) SELECT CHANGE_DATE AS [日期],TYPE AS [类型], ABS(TOTAL) AS [变更数量],[库存] FROM MU2 / 日期 类型 变更数量 库存 2012-02-20 00:00:00000 入库 1000 1000 2012-02-20 00:00:00000 出库 500 500 2012-02-21 00:00:00000 出库 300 200 2012-02-22 00:00:00000 入库 1500 1700 2012-02-22 00:00:00000 出库 500 1200 2012-02-24 00:00:00000 出库 400 800 /
------解决方案-------------------------------------------------------- 最好有一个递增ID,SQL2005以上版本可以用ROW_NUMBER()产生ID,下面是用临时表,好理解点
SQL code declare @t1 table (D datetime,Qty float) declare @t2 table (D datetime,Qty float) insert into @t1 select '2012-02-20', 1000 union all select '2012-02-22', 1500 insert into @t2 select '2012-02-20', 500 union all select '2012-02-21', 300 union all select '2012-02-22', 500 union all select '2012-02-24', 400 select identity(int,1,1) as id, into #t from (select D,Qty In_Qty,0 Out_Qty from @t1 union all select D,0,Qty from @t2) t order by D,In_Qty desc select D as '日期', case when In_Qty>0 then '入库' else '出库' end as '入库/出库类型', case when In_Qty>0 then In_qty else Out_Qty end as '数量', (select sum(In_Qty)-sum(Out_Qty) from #t where id0 then '入库' else '出库' end as '入库/出库类型', case when In_Qty>0 then In_qty else Out_Qty end as '数量', (select sum(In_Qty)-sum(Out_Qty) from #t where id
如果出库和入库设计在一个表,那么只能设计的标志字段来说明该记录是入库还是出库。比如该记录为1为出库,为2为入库。
应该是单据号吧,这个和实际项目设计有关,通常用来标示单据的唯一性,就像一个人对一个身份z号一样,不能重复。
你应该是有如下的这些表和关系:
1、《商品目录表》或者叫商品编码表:包括 商品ID 商品的名称、规格、计量单位……其他特征描述……还有最为重要的 商品代码……
2、《商品入库单》 包括:入库单ID、入库单编号、入库日期、入库性质、备注及入库检验负责人等等信息
3、《商品入库表》包括:入库单ID、 商品ID 、入库数量、金额、备注 等等
4、《商品出库单》 包括 出库单ID、出库单编号、出库日期、出库部门、备注及出库负责人等相关信息……
5、《商品出库表》包括 出库单ID、商品ID、出库数量、 金额 、备注等等
关系是 :
1、《商品目录表》中的 商品ID 分别包含《商品入库表》《商品出库表》中的 商品ID 的所有记录……
2、《商品入库单》 中的 入库单ID 包含 《商品入库表》中的 入库单ID 的所有记录……
3、《商品出库单》中的 出库单ID 包含 《商品出库表》中的 出库单ID 的 所有记录……
你的库存表,通过 《商品目录表》《商品入库表》、《商品出库表》等这些表格的查询获得……如果是分期报表的话 就连带《商品入库单》、《商品出库单》这两个表 通过对 入出库日期进行条件设置 来完成相应的查询……
不知道能否帮到你……这看上去 比你的复杂了些,但是 会记录得的更加详细 、复合一般数据库记录信息的 管用方法……
这个是典型的进销存应用。对于此问题我有心得与你同勉:
1、对于进销存,基础数据应该是入库记录与出库记录,它们两个应该做为进销存的数据库的原始数据。
2、至于出入库单只是出入库数据的输出形式,可以用VBA 通过查询原始数据生成打印表格输出。
3、库存数据是由出入库记录数据动态生成的,可以用数据透视表,对出入库记录进行汇总。可是,由于数据透视表的数据源要求为单一的数据表,因此需要把出入库记录放在一个表中,可以设置专用字段用以区分记录条目是入库还是出库,并且出库数量要以为负数形式记录。这样数据透视表对数据进行汇总时是会有增有减了。
4、以上生成的库存数据为实时数据,能够体现最新的库存结果。但如果要求仓库出具截止某一天的库存数据时,数据透视表实现起来有点困难,只能是在截止日当天把数据透视表的数据复制出来保存。
以上是我用EXCEL实现进销存的一点体会,希望对你有用。
直接用SQL语句写算了;
insert into 出库表 (物资编码,物资名称,xx,xxx,) values ('030101', 'xx商品', '',);
delete from 入库表 where 物资编码=‘030101’ and 物资名称=‘xx商品’ ;
mssql 触发器自动更新
CREATE TRIGGER 入库表修改 ON 入库表
FOR UPDATE
AS
SET NOCOUNT ON
if update(入库数量)
begin
update 库存表 set 库存数量=isnull(a入库数量,0)-isnull(b入库数量,0)-isnull(c出库数量,0)
from 入库表 a,deleted b,出库表 c where a型号=b型号 and a型号=c型号
update 库存表 set 库存数量=isnull(a入库数量,0)+isnull(b入库数量,0)-isnull(c出库数量,0)
from 入库表 a,inserted b,出库表 c where a型号=b型号 and a型号=c型号
end
SET NOCOUNT OFF
go
CREATE TRIGGER 出库表修改 ON 出库表
FOR UPDATE
AS
SET NOCOUNT ON
if update(出库数量)
begin
update 库存表 set 库存数量=isnull(a入库数量,0)-isnull(c出库数量,0)+isnull(b出库数量,0)
from 入库表 a,deleted b,出库表 c where a型号=b型号 and a型号=c型号
update 库存表 set 库存数量=isnull(a入库数量,0)-isnull(c出库数量,0)-isnull(b出库数量,0)
from 入库表 a,inserted b,出库表 c where a型号=b型号 and a型号=c型号
end
SET NOCOUNT OFF
以上就是关于入库出库表,求库存,这个sql如何写全部的内容,包括:入库出库表,求库存,这个sql如何写、进销存数据库建表时,把出库入库表合在了一起,那么在录入数据时怎样区分是入库还是出库呢、我想用access做一张库存表,一张入库表,一张出库表,如何建立关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)