질문입니다.(고수님들) 0 2 1,339

by jsbj [SQL Query] [2015.09.07 19:17:54]


캡처.JPG (39,706Bytes)

여기서 (출국일 - 입국일) 빼서 (체류일)을 구할수가 있나요?  

한사람이 당월에 여러번 입출국 합니다.

입국했다가 출국을 안했을 경우도 있습니다.

쿼리를 어떻게 짜야될지 모르겠네요 ..  부탁드립니다. 

by 마농 [2015.09.08 08:56:41]
WITH t AS
(
SELECT 'M123456789' id, '리차드' nm, '입국' gb, '2015-09-07' dt FROM dual
UNION ALL SELECT 'M123456789', '리차드', '출국', '2015-09-11' FROM dual
UNION ALL SELECT 'M123456789', '리차드', '입국', '2015-09-23' FROM dual
UNION ALL SELECT 'M123456798', '마이클', '입국', '2015-08-30' FROM dual
UNION ALL SELECT 'M123456798', '마이클', '출국', '2015-09-02' FROM dual
UNION ALL SELECT 'M123456798', '마이클', '입국', '2015-09-12' FROM dual
UNION ALL SELECT 'M123456795', 'TST'   , '입국', '2015-08-30' FROM dual
UNION ALL SELECT 'M123456795', 'TST'   , '출국', '2015-08-30' FROM dual
)
SELECT id, nm
     , i_dt, o_dt
     , TO_DATE(o_dt, 'yyyy-mm-dd') - TO_DATE(i_dt, 'yyyy-mm-dd') + 1 cnt
  FROM (SELECT id, nm, gb
             , dt i_dt
             , LEAD(dt) OVER(PARTITION BY id ORDER BY dt, gb) o_dt
          FROM t
        )
 WHERE gb = '입국'
;

 


by jsbj [2015.09.08 14:21:35]

감사 합니다.  해결이 잘 되었네요 ^^

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