윈도우펑션 관련 문의 드립니다. 0 2 939

by 미소애비 [SQL Query] 윈도우펑션 window function [2017.12.04 17:05:18]


아래와 같이 데이터를 status 상태 값에 따라,

rnum 값을 연속된 숫자로 구분하고 싶은데요,

윈도우 펑션 이래저래 만져 봐도 답을 잘 못 찾겠네요...ㅠㅜ

 

고수님들의 도움 부탁 드립니다.

 

감사합니다.

 


with tmp as 
    (select '20171101000000' as tm, 'Y' as status from dual
    union   all select '20171101000001', 'Y' from dual
    union   all select '20171101000002', 'N' from dual
    union   all select '20171101000003', 'N' from dual
    union   all select '20171101000004', 'Y' from dual
    union   all select '20171101000005', 'Y' from dual
    union   all select '20171101000006', 'N' from dual
    union   all select '20171101000007', 'Y' from dual
    )
select  *
from    tmp;

 

 

timestamp, status, rnum

20171101000000, Y, 1

20171101000001, Y, 1

20171101000002, N, null

20171101000003, N, null

20171101000004, Y, 2

20171101000005, Y, 2

20171101000006, N, null

20171101000007, Y, 3

by 랑에1 [2017.12.04 17:46:00]
SELECT a.tm, a.status, CASE WHEN a.status = 'Y' THEN SUM(t) OVER(ORDER BY a.tm) END rnum
FROM     
(    
  SELECT  a.*, CASE WHEN a.status IN (LAG(a.status, 1) OVER(ORDER BY tm), 'N') THEN 0 ELSE 1 END t
  FROM    tmp a
) a 

맞는지 모르겠네요

 


by 미소애비 [2017.12.04 18:08:47]

너무 잘 됩니다~~~!! 감사합니다~~

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