【问题标题】:Make NOT EXISTS clause in Webi在 Webi 中设置 NOT EXISTS 子句
【发布时间】:2018-02-15 13:02:39
【问题描述】:

我有一个需要在 WebI 中重写的 Oracle 查询。我无法弄清楚如何模仿 Oracle 的“不存在”。如果我的查询在给定时间范围内具有交易日期,则我的查询将返回一个对象,但如果它在该时间范围之前有任何内容,则不会返回。也就是说,类似于:

SELECT Object_Number 
     , Transaction_Date 
     , <other fields>
FROM Object_Table 
INNER JOIN Transaction_Table   ON  Transaction_Table.Key = Object_Table.Key
WHERE Transaction_Table.Date BETWEEN '2017-07-01' AND '2017-01-31' 
AND NOT EXISTS (SELECT 1 FROM Transaction_Table  
                WHERE Transaction_Table.Key = Object_table.Key 
                AND   Transaction_Table.Date < '2017-07-01' 
               ) 

它有点复杂,但这是一个很好的近似值。

我认为我可以使用子查询过滤器,但我不知道如何将该子查询绑定到原始 Object_Number 或如何模仿“不存在”。我不认为“NOT IN”与“NOT EXISTS”相同,因为宇宙中的记录复合体包括 transaction_date(它基本上是 Object_Table 和 Transaction_Table 的 JOIN),所以我要检查的是我当前记录上的日期(范围内的日期)不在范围之外。我确信这个过滤子查询可以做更多的事情,但我不理解它。

我找不到任何复杂的过滤器示例(尽管许多声称“复杂” - 他们有 3 个“AND”语句 - 噢噢噢!)。

我认为这可以通过宇宙中的一个新维度来完成 [使用 MIN(Transaction_Date)],但我无法使用该路径。

在我看来,如果没有这种类型的基本功能(至少它是 Oracle SQL 中的基本功能),这个 WebI 工具会受到严重限制。

【问题讨论】:

    标签: oracle sap business-objects not-exists webi


    【解决方案1】:

    NOT EXISTSNOT IN 不同,这是正确的,但在您的示例代码中,任何一个都可以。查询可以用NOT IN 重写,如下所示:

    SELECT Object_Number 
         , Transaction_Date 
         , <other fields>
    FROM Object_Table 
    INNER JOIN Transaction_Table   ON  Transaction_Table.Key = Object_Table.Key
    WHERE Transaction_Table.Date BETWEEN '2017-07-01' AND '2017-01-31' 
          AND object_table.key NOT IN 
              (SELECT transaction_table.key
                 FROM transaction_table
                WHERE transaction_table.date < '2017-07-01'
    

    在 WebI 中复制此逻辑可以通过子查询来完成。我将我的宇宙用于以下屏幕截图,因此我的 Session IdEvent IdEvent Date Local 对应于您的 object_table.keytransaction_table.keytransaction_table.date

    如果必要的逻辑确实需要NOT EXISTS,那么 WebI 中的标准子查询就无法完成。但是,您可以通过在 Universe 中创建预定义条件来实现逻辑来作弊。条件将包含查询中的整个 NOT EXISTS 子句;将其放入 WebI 中的查询中会将该子句添加到 SQL 中。

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 2013-02-10
      • 2013-04-17
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2012-01-03
      • 2016-01-09
      相关资源
      最近更新 更多