오라클 쿼리 질문드리겠습니다... 0 2 899

by 대한민국1 [SQL Query] Query [2020.05.07 12:02:48]


안녕하세요!!

쿼리를 어떻게하면 원하는결과를 얻을 수 있을까하여 질문드립니다...

만약에 의사가 약에 대하여 처방을 지어줍니다.

환자 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이라는 숫자만 추출하는 것입니다... 어떻게 방향을 잡아서 작성해야할 지 감이 안잡혀 질문드립니다...

by 마농 [2020.05.07 14:05:20]
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
;

 


by 대한민국1 [2020.05.07 14:47:46]

정말로 감사합니다 마농님

좋은하루되세요!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입