【发布时间】: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