두 개의 테이블이 있습니다.
om라는 테이블에 등록일자가 있고
od라는 테이블에도 등록일자가 있습니다.
두 테이블을 비교 해서 om테이블의 등록일자에 등록된 데이터만 가져와야 하는데
od테이블의 등록일자 이후에 등록데이터만 가져올려구 하는데 어떻게
조인해야 할까요?
두 테이블의 서로 키는 kid입니다.
쿼리를 잠시 보면 end_date+1를 한건 이 컬럼의 다음날 등록된것만 가져올려 넣었습니다.
select om.kid from obumanager om, obumodel od
where od.srdate in (
select end_date+1 from od.obumodel
where om.kid = od.kid
)
;
WITH T1 AS (SELECT 1 KID, TO_DATE('20150101', 'YYYYMMDD') REGDATE FROM DUAL UNION ALL SELECT 2 KID, TO_DATE('20150102', 'YYYYMMDD') REGDATE FROM DUAL) , T2 AS (SELECT 1 KID, TO_DATE('20150102', 'YYYYMMDD') REGDATE FROM DUAL UNION ALL SELECT 2 KID, TO_DATE('20150102', 'YYYYMMDD') REGDATE FROM DUAL) SELECT * FROM T1, T2 WHERE T1.KID = T2.KID AND T2.REGDATE >= T1.REGDATE + 1;
이런 쿼리를 원하시는 건가요?
SELECT OM.KID FROM OBUMANAGER OM, OBUMODEL OD WHERE OM.KID = OD.KID AND STARTDATE >= TO_DATE('20140101','YYYYMMDD') + 1 AND SRDATE < TO_DATE('20150308','YYYYMMDD') + 1 ;
질문하신 내용으로는 위 쿼리 정도로 보여 지는데요..
STARTDATE와 SRDATE가 어느 테이블에 있는가에 따라 좀 달라지겠네요..
가능하시면 실제 데이터 몇개라도 정확한 테이블 명과 컬럼명으로 알려주시고
그 경우 원하시는 출력 형태가 무엇인지 샘플로 만들어 주시면 좀더 도움이 되지 않을가 싶네요..