我使用 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;
答案 0 :(得分:0)
好的,你的问题是数据重复,因此你的总和正在受到影响。
您可以使用运行总计在Crystal报表中解决此问题。
按照以下步骤操作:
创建一个总计。
选择要汇总的字段
提供所需的摘要
重置Change of ID
并将正在运行的总计放在设计上而非直接汇总值。