쿼리 질문 좀 드리겠습니다. 0 4 887

by tester0101 [SQL Query] [2018.01.03 16:17:44]


안녕하세요, 혹시 이런 결과값은 쿼리로 어떻게 구현해야하는지 궁금하네요..

 

기존 아래와 같은 결과값이 있는데,

      DATE              COL1      COL2 

201801031530     eclipse.exe    280    
201801031532     eclipse.exe    285    
201801031534     eclipse.exe    288    
201801031536     eclipse.exe    290    
201801031538     eclipse.exe    295    

 

아래와같이 COL3를 추가하고싶습니다.

      DATE              COL1      COL2   COL3

201801031530    eclipse.exe     280       0
201801031532    eclipse.exe     285       5
201801031534    eclipse.exe     288       3
201801031536    eclipse.exe     290       2
201801031538    eclipse.exe     295       5

 

COL3은 이전 ROW값을 뺀 값이 들어가야하는데, 

어떻게 접근해야할지 감이 안오네요..

by 우리집아찌 [2018.01.03 16:28:43]
WITH T AS (
SELECT '201801031530' DT , 'eclipse.exe' COL1 , 280 COL2 FROM DUAL UNION ALL    
SELECT '201801031532' , 'eclipse.exe' , 285 FROM DUAL UNION ALL    
SELECT '201801031534' , 'eclipse.exe' , 288 FROM DUAL UNION ALL    
SELECT '201801031536' , 'eclipse.exe' , 290 FROM DUAL UNION ALL   
SELECT '201801031538' , 'eclipse.exe' , 295  FROM DUAL 
)

SELECT DT , COL1 , NVL(COL2 - LAG(COL2) OVER(ORDER BY DT),0) COL3
     , ROW_NUMBER() OVER(ORDER BY DT) RN
  FROM T
 ORDER BY 4  
 

 


by tester0101 [2018.01.03 16:45:09]

감사합니다.

도움 많이 되었습니다. (__)


by 마농 [2018.01.03 16:33:23]
-- col1 의 역할이 있다면? --> col3 | 없다면? --> col4
SELECT dt, col1, col2
     , col2 - LAG(col2, 1, col2) OVER(PARTITION BY col1 ORDER BY dt) col3
     , col2 - LAG(col2, 1, col2) OVER(ORDER BY dt) col4
  FROM t
;

 


by tester0101 [2018.01.03 16:45:49]

감사합니다.

열심히 공부해야겠다는 생각이 드네요. 도움 많이 되었습니다.(__)

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