안녕하세요!!
쿼리를 어떻게하면 원하는결과를 얻을 수 있을까하여 질문드립니다...
만약에 의사가 약에 대하여 처방을 지어줍니다.
환자 A
구분 | 약처방일자 | 일수 |
약A | 2020-05-01 | 2 |
약B | 2020-05-05 | 3 |
약C | 2020-05-07 | 2 |
위의 표처럼 약A, B, C를 지어주었는데
약A는 2020-05-01부터 2일간먹으라고 약을 주면 5/1, 5/2 => 2일치
약B는 2020-05-05부터 3일간먹으라고 약을 주면 5/5, 5/6, 5/7 => 3일치
약C는 2020-05-07부터 2일간 먹으라고 약을 주면 5/7, 5/8 => 2일치
이렇게 되는데 제가 원하는 결과는 중복을 제거 한 일수이며
원하는 결과는 5/1(약A), 5/2(약A), 5/5(약B), 5/6(약B), 5/7(약B), 5/8(약C) => 6일(약C의 5/7은 약B에 5/7이 있으니 중복제거)
6이라는 숫자만 추출하는 것입니다... 어떻게 방향을 잡아서 작성해야할 지 감이 안잡혀 질문드립니다...
WITH t AS ( SELECT '약A' gb, '2020-05-01' dt, 2 cnt FROM dual UNION ALL SELECT '약B', '2020-05-05', 3 FROM dual UNION ALL SELECT '약C', '2020-05-07', 2 FROM dual ) SELECT COUNT(DISTINCT TO_DATE(dt, 'yyyy-mm-dd') + lv - 1) dt_cnt FROM t , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) WHERE lv <= cnt ;