求物料收发明细表计算每日结存数量的SQL

cclzxy2009 2009-08-14 01:03:16
各位大侠:小弟现在在做一张物料收发明细报表时,遇到了如下难题,恳请赐教. 问题描述如下,
现有如下数据的表:
日期 单据类型 物料 仓库 期初数量 收入数量 发出数量 结存数量
2009-01-01 外购入库 A物料 A仓库 10 1 0 0
2009-02-01 其他入库 A物料 A仓库 0 3 0 0
2009-03-01 销售出库 A物料 A仓库 0 0 2 0
2009-01-02 外购入库 B物料 B仓库 20 4 0 0
2009-02-02 其他入库 B物料 B仓库 0 2 0 0
2009-03-02 销售出库 B物料 B仓库 0 0 4 0
...
如何写出求出每种物料每日的期初数量和结存数量的SQL?

能得到如下的结果?
日期 单据类型 物料 仓库 期初数量 收入数量 发出数量 结存数量
2009-01-01 外购入库 A物料 A仓库 10 1 0 11
2009-02-01 其他入库 A物料 A仓库 11 3 0 14
2009-03-01 销售出库 A物料 A仓库 14 0 2 12
2009-01-02 外购入库 B物料 B仓库 20 4 0 24
2009-02-02 其他入库 B物料 B仓库 24 2 0 26
2009-03-02 销售出库 B物料 B仓库 26 0 4 22
...
表结构:
create table tt
(
FDate datetime,
FBilltype varchar(50),
FItem varchar(50),
FStock varchar(50),
FBegQty Decimal(28,10),
FInQty Decimal(28,10),
FOutQty Decimal(28,10),
FEndQty Decimal(28,10)
)
...全文
686 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cclzxy2009 2009-08-14
  • 打赏
  • 举报
回复
谢谢各位的热心帮助!按jiangshun的方法,问题已解决!
jiangshun 2009-08-14
  • 打赏
  • 举报
回复
if object_id('[TB]') is not null drop table [TB]
create table TB
(
FDate varchar(10),
FBilltype varchar(50),
FItem varchar(50),
FStock varchar(50),
FBegQty Decimal(28,10),
FInQty Decimal(28,10),
FOutQty Decimal(28,10),
FEndQty Decimal(28,10)
)
insert [TB]
select '2009-01-01','外购入库','A物料','A仓库',10,1,0,0 union all
select '2009-02-01','其他入库','A物料','A仓库',0,3,0,0 union all
select '2009-03-01','销售出库','A物料','A仓库',0,0,2,0 union all
select '2009-01-02','外购入库','B物料','B仓库',20,4,0,0 union all
select '2009-02-02','其他入库','B物料','B仓库',0,2,0,0 union all
select '2009-03-02','销售出库','B物料','B仓库',0,0,4,0

select 日期=FDate,
单据类型=FBilltype,
物料=FItem,
仓库=FStock,
期初数量=isnull((select sum(FBegQty+FInQty-FOutQty) from TB where t.FItem=FItem and t.FDate>FDate),FBegQty),
收入数量=FInQty,
发出数量=FOutQty,
结存数量=isnull((select sum(FBegQty+FInQty-FOutQty) from TB where t.FItem=FItem and t.FDate>FDate),FBegQty)+FInQty-FOutQty
from TB t

/*
日期 单据类型 物料 仓库 期初数量 收入数量 发出数量 结存数量
---------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
2009-01-01 外购入库 A物料 A仓库 10.0000000000 1.0000000000 0.0000000000 11.0000000000
2009-02-01 其他入库 A物料 A仓库 11.0000000000 3.0000000000 0.0000000000 14.0000000000
2009-03-01 销售出库 A物料 A仓库 14.0000000000 0.0000000000 2.0000000000 12.0000000000
2009-01-02 外购入库 B物料 B仓库 20.0000000000 4.0000000000 0.0000000000 24.0000000000
2009-02-02 其他入库 B物料 B仓库 24.0000000000 2.0000000000 0.0000000000 26.0000000000
2009-03-02 销售出库 B物料 B仓库 26.0000000000 0.0000000000 4.0000000000 22.0000000000

(6 行受影响)

*/

drop table TB
百年树人 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 josy 的回复:]
SQL codeupdate ttset FEndQty=FBegQty+FInQty-FEndQtyselect*from tt
[/Quote]
没有环境测试,试试
[code=SQL]update t
set
t.FBegQty=(select top 1 FBegQty+FInQty-FEndQty from tt where FDate<t.FDate),
t.FEndQty=t.FBegQty+t.FInQty-t.FEndQty
from
tt t
[/code]
cclzxy2009 2009-08-14
  • 打赏
  • 举报
回复
to jianshun:
这样可以算出结存数量,但是如何计算出每日的期初数量呢?这个表可能有很多种物料,表按物料进行了分组,如果是一个物料还好,问题是有多个物料的情况,就不知如何处理了。
百年树人 2009-08-14
  • 打赏
  • 举报
回复
update tt
set FEndQty=FBegQty+FInQty-FEndQty

select * from tt
jiangshun 2009-08-14
  • 打赏
  • 举报
回复
select 日期,单据类型,物料,仓库,期初数量,收入数量,发出数量,结存数量=期初数量+收入数量-发出数量
from 表
佳宜进销存管理软件 一、适应对象: 本软件适用于大中小型企业、商畅 生产厂等物资供销、商品流通部门进行物资(商品)的采购、销售、库存的管理。主要功能包括进采购、采购退货、采购付款、销售、销售退货、销售付款、物料领用、领料退回、库存盘点、仓库调拨、借入、借出、借入还出、借出还入,供方客户资料管理,供方供货汇总、明细报表,采购付款汇总、明细报表,客户供货汇总、明细报表,客户付款汇总、明细报表,部门领用汇总、明细报表、仓库汇总、明细报表。销售毛利汇总、明细报表,销售年报表等多种报表,使公司业务情况一目了然。 二、软件特点: 1。导航式的界面: 所想即所见,所见即所想,这就是导航式操作的优点。众多功能的巧妙安排,缩短了数据传输的流程;帐务的错综复杂体现在系统内部,你的操作依然那么简单,省时又省心。 全能的报表查询;所有的报表和基本资料均可导入EXCEL中进行分析加工,以满足用户的更高的要。 2。高效强大的查询工具: 系统提供多种查询方式来帮助您快速找到所需要的资料。无论是使用预制条件还是临时的高级组合查找,都能够让您省心省力; 3。稳定安全的数据库: 佳宜系列软件分两种数据库版本,一种是采用Mrosoft公司的Access作后台数据库性能稳定、数据交换速度快、数据安全(用友、金碟单机版也是使用Access数据库),另一种是采用Microsoft公司的SQL作后台数据库性能稳定、数据交换速度快、数据安全。 (1)佳宜Access数据库版本的系列软件支持单机、网络. (2)佳宜SQL数据库版本的系列软件支持单机、网络、远程连接. 4。完全的网络化操作: 各个站点的数据保存即通过网络传递到服务器,相关人员可以随时看到更新的数据,极大的提高了信息传递的速度,使得企业的管理效率更上一层楼; 5。开放式的打印设置: 佳宜系列软件的打印样式设计功能采用当今流行的报表设计器进行设计,兼具WORD和EXCEL的强大功能。用户不仅可以对单据/报表的外观进行设计(包括对格式、字体、边框、背景等的设计),而且可以设定报表内部数据的计算方法(包括对数据来源的设定、数据算法的设定等)。 三、部分特色功能: 1,支持 固定成本法、加权平均法、移动加权平均法 计算物品成本单价; 2,支持材料入库、出库、调拨、盘点、借货处理; 3,支持以仓库为中心的场景管理模式; 4,支持入库、出库和调拨向导操作模式; 5,支持生成每月的物品收发结存表,使企业界及时的了解当前库存情况; 6,采购付款、销售收款明细情况,及分析报表; 7,支持生成每种物品的收发明细账; 8,销售毛利汇总、明细报表,销售年报表等多种报表,使公司业务情况一目了然。 9,支持警戒库存量报警功能; 10,支持简单易用的数据自动备份、数据恢复等功能; 11,完善、灵活的角色、操作员权限管理;

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧