利用SQL开发人员中的一个函数来计算数量

时间:2017-11-02 02:39:11

标签: sql oracle function plsql crystal-reports

我使用 SQL开发人员中的函数来计算化合物的总剩余数量,并通过 Crystal Report 显示结果。此外,它基于实验室信息管理系统。

在图中,不同的ID表示不同的化合物瓶。瓶子上的每个动作都将被记录并由版本指定。数据已按化合物,供应商和更改时间(CHANGED_ON)分类。

在图像中,我要展示的是" red"总剩余数量。但是,我无法做到这一点,因为收到的不同瓶装化合物的相同的更改时间。因此,它直接总结每瓶(300,300,300)的数量而不是一个一个(100,200,300)。

我如何修改SQL开发人员中的函数,或者我可以在Crystal Report中执行哪些操作(例如:使用公式)来实现请求。我认为是做一个循环来识别ID并将版本数量总结到最新版本,但我无法弄明白......

create or replace FUNCTION TOTAL_TEST1
(templatex_id IN NUMBER, vendor in VARCHAR2, chane_on IN DATE)
RETURN NUMBER 
IS amount NUMBER(10); 
BEGIN
SELECT SUM(version_qty)
INTO amount
FROM CONSUMABLE_SUMMARY_VIEW TC,
  (SELECT ID,
    MAX(VERSION) MAX_VERSION
  FROM CONSUMABLE_SUMMARY_VIEW
  WHERE TEMPLATE_ID = templatex_id
  AND Vendor_name = vendor
  AND CHANGED_ON    <= chane_on
  GROUP BY ID
  ) TD
WHERE TC.ID = TD.ID
AND TC.VERSION   = TD.MAX_VERSION
AND TC.STATE_NAME NOT LIKE 'Waste';
RETURN amount; END;

Example

1 个答案:

答案 0 :(得分:0)

好的,你的问题是数据重复,因此你的总和正在受到影响。

您可以使用运行总计在Crystal报表中解决此问题。

按照以下步骤操作:

  1. 创建一个总计。

  2. 选择要汇总的字段

  3. 提供所需的摘要

  4. 重置Change of ID并将正在运行的总计放在设计上而非直接汇总值。