使用PeopleSoft查询排除SUM中的重复值

时间:2014-03-08 00:59:12

标签: sql oracle sum duplicates peoplesoft

在这里完成菜鸟,所以忍受我!...

我正在尝试在 Oracle PeopleSoft 中编写一个查询,该查询计算并汇总表的数量列。 COUNT值工作得很好;但是因为在查询中加入的其中一个表可以为它所连接的表的每一行都有多个值,所以SUM包含多个实例并给出夸大的值。以下是基础知识:

表A: HEADER

表B: LINE

表C: ERROR_CODE(表B的外部联接)

我想对每个唯一B.LINE_AMOUNT的{​​{1}}求和;但由于每个凭证行可能有多个A.HEADER_ENTRY,因此查询会将C.ERROR_CODE乘以每个规则。

示例 - B.LINE_AMOUNT每行共有4行HEADER_ENTRY #12345,第3行有2个错误代码。当我运行查询时,该条目的结果为$50,而不是实际 $250

快速说明:

  • 实际查询有7个表记录,实际上有两个不同的“错误代码”记录(两者都需要) - 两者都在外连接上

  • $200是有条件的;所以我目前正在使用SUM声明 - >

    CASE WHEN

编辑:根据要求,这是从PeopleSoft查询中获取的sql:

SUM(CASE WHEN A.ENTRY_DATE < :2 THEN B.LINE_AMOUNT ELSE 0 END)

跑步时,我得到一个完美的计数;但由于“MTCH_RULE_OVRD”和“AP_MTCH_EXCPTN”表可以为每个表提供多个“MATCH_RULE_ID”,因此总和被夸大了。不确定我是否需要查询提示或什么...但我是STUCK-Overflow!

我确信这对你们所有人来说都很简单!谢谢!

1 个答案:

答案 0 :(得分:0)

如果有人想知道,我(遗憾地)最终不得不求助于SUBQUERY方法(我说“遗憾”因为PeopleSoft 9.1不幸的是有多个联合/子查询组合的查询会导致系统会话终止问题这就是为什么我试图避免这种方法)。如果有人对其他方法有进一步的了解,那么仍然感兴趣;感谢