关于库存余额、财务收支余额的计算

发表于:2007-05-25来源:作者:点击数: 标签:财务收支库存余额计算关于
1 前言 在库存管理系统中,经常需要涉及查询功能。实现查询功能大致有两种,如下: 第一种是在写入数据表的时候,计算余额,并将余额存入字段中。此方法的优点在于查询速度快,缺点是一旦原始数据需要修改,则余额的同步更新会很复杂,甚至无法实现。 第二种

  1 前言
  在库存管理系统中,经常需要涉及查询功能。实现查询功能大致有两种,如下:
  第一种是在写入数据表的时候,计算余额,并将余额存入字段中。此方法的优点在于查询速度快,缺点是一旦原始数据需要修改,则余额的同步更新会很复杂,甚至无法实现。
  第二种是在数据表的字段中不设立余额字段,在查询过程中实现计算。此方法的缺点是正常情况下速度较慢,优点是数据存取逻辑较简单。
  本文主要论述第二种的方法,也就是余额字段的计算。
  
  2 余额实时计算的几种方法
  2.1 设立临时表,在查询之前先计算余额
  此方法是目前大多数程序员使用的方法,优点是算法简单,缺点是运行效率非常低下,我个人认为不足为取。
  2.2 使用ORACLE的OVER函数实现
  此方法甚至有的OCP仍不懂得,但确实是值得大家研究讨论的解决方案
  OVER函数的简单资料在附件,大家可以参阅.
  点击此处下载armok0178880.rar
  本文重点描述余额实时计算的第二种方法
  
  3 OVER函数实现余额计算
  3.1 实例
  CONNECT SCOTT/TIGER@DSV241DW1;
  SELECT 
     DEPTNO
     ,ENAME ITEMNAME 
     ,TO_CHAR(HIREDATE,'YYYY.MM.DD') TRXDATE
     ,SAL INF 
     ,COMM OUF 
     ,SUM(SAL-NVL(COMM,0)) OVER ( ORDER BY HIREDATE) ENDINV
    FROM EMP
    ORDER BY HIREDATE;
  
  3.2 字段
  INF表示入库
  OUT表示出库
  ENVINV表示余额
  
  3.33 OVER使用说明
  每条记录都SUM本记录之前(包括本记录)的出库和入库,于是求得本记录为止的余额。

原文转自:http://www.ltesting.net