2017-09-06 3 views
0

私はWebIで書き直す必要のあるOr​​acleクエリーを持っています。私はOracleから「存在しない」と模倣する方法を理解できません。指定された時間枠内に取引日付がある場合はクエリがオブジェクトを返しますが、その時間枠より前の日付がある場合は返しません。つまり、次のようなものです:bobj/webi mimc 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にそのサブクエリを結び付ける方法や「存在しない」方法を模倣する方法はわかりません。私は、宇宙のレコード複合体がtransaction_date(基本的にObject_TableとTransaction_TableのJOINです)を含んでいるので、「NOT IN」が「NOT EXISTS」と同じではないと思います。私の現在のレコード(範囲内の日付)にある日付が範囲外ではないことを示します。私はこのフィルタサブクエリがもっと多くのことをすることができると確信していますが、私はそれを理解していません。

複雑なフィルタの例はありません。(「複雑」と主張しているものが多数ありますが、3つの「AND」ステートメントがあります) - oooohhhh!

私はそれが宇宙[MIN(Transaction_Date)を使用して]で新しい次元で達成できると思いますが、そのパスは私には利用できません。

このタイプの基本機能がないと(少なくともOracle SQLでは基本的ですが)、このWebIツールは厳しく制限されています。

答えて

0

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 Id、およびEvent Date Localは、object_table.key,transaction_table.key、およびtransaction_table.dateに対応しています。

enter image description here

必要なロジックは、実際にはない場合でWebIで標準サブクエリで行うことができない、次により、NOT EXISTSが必要です。ただし、ロジックを実装するために、ユニバースに事前定義された条件を作成することで、不正行為をすることができます。この条件には、クエリの全体のNOT EXISTS句が含まれます。これをWebIのクエリにドロップすると、その句がSQLに追加されます。

関連する問題