2017-09-06 1 views
0

WebI에서 다시 작성해야하는 Oracle 쿼리가 있습니다. 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에 묶는 방법이나 "존재하지 않음"을 모방하는 방법을 알지 못합니다. 나는 "NOT IN"이 "NOT EXISTS"와 같다고 생각하지 않습니다. 왜냐하면 우주의 레코드 컴플렉스에는 transaction_date (기본적으로 Object_Table과 Transaction_Table의 조인입니다)가 포함되어 있기 때문에 모든 체크를 할 수 있습니다. 현재 기록 (날짜 범위 내)에있는 날짜가 범위를 벗어난 것이 아닙니다. 나는이 필터 부질의가 더 많은 일을 할 수 있다고 확신하지만 그것을 이해하지 못하고있다.

"복잡한"것으로 주장되는 많은 필터에도 불구하고 복잡한 필터 예제를 찾을 수 없습니다. 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에서이 논리는 하위 쿼리 수행 할 수 있습니다 복제. 내 우주를 다음 스크린 샷에 사용 했으므로 , Event IdEvent Date Localobject_table.key, transaction_table.keytransaction_table.date과 일치합니다.

enter image description here

필요한 논리가 사실 않으면

는 WebI의 표준 하위 쿼리와 함께 할 수없는 것보다 그 다음, NOT EXISTS이 필요합니다. 그러나 논리를 구현하기 위해 유니버스에 미리 정의 된 조건을 만들어 속일 수 있습니다. 조건에는 쿼리의 전체 NOT EXISTS 절이 포함됩니다. 이것을 WebI의 쿼리에 추가하면 해당 절이 SQL에 추가됩니다.

관련 문제