sample 아래와 같이 작성하였습니다.
시작일과 종료일 사이에 코드1과 코드2값이 중복된게 있는지 체크하고 싶은데요,
즉, 두번째 데이터는 구간이 겹치지 않기 때문에 문제가 없고 첫번째와 세번째의 경우에는 겹치는 구간이
존재하면서 코드1과 코드2값이 같기 때문에 대상이 되어야 합니다.
기존에 Unique Key 설정이 없어서 추가를 하려고 하는데 날짜가 구간이라서 단순하게 체크하기가 어렵네요...
감사합니다.
아, Unique Key 설정도 문제가 좀 있네요...
시작일 종료일이 포함된 경우 물리적인 UK 설정이 안되고 (할수는 있지만 구간 체크가 안됨)
프로그램 로직상에서 Duplicate 체크할수 밖에 없나요?
WITH t AS
(SELECT 'A' cd_1, '01' cd_2, to_date('20170101','YYYYMMDD') st_date, to_date('20170131','YYYYMMDD') ed_dt FROM dual UNION ALL
SELECT 'A', '01', to_date('20170301','YYYYMMDD'), to_date('20170331','YYYYMMDD') FROM dual UNION ALL
SELECT 'A', '01', to_date('20170111','YYYYMMDD'), to_date('20170131','YYYYMMDD') FROM dual
)
SELECT * FROM t