선택된 레코드의 이전 컬럼값 select 1 2 2,730

by dnfrkwhr [2014.04.03 19:24:39]


Table T

num value    
1            3.0
3            2.0
8            5.9
10           11.0
11           2.0
17           2.0  
S라는 테이블을 생성하여 Table T에서 num값이 10인 레코드를 추가하였습니다.
여기에 더불어 현재 Table T에서 새롭게 추가한 레코드의 이전 레코드 중 컬럼(value) 값 5.9만 
추가로 넣고 싶은데요 어떻게 해야할지 조언 부탁드립니다.
by DarkBee [2014.04.03 21:21:12]
lag() over()

by 김용학 [2014.04.04 09:11:13]

추가여부 컬럼을 넣는 방법이 어떻까요?
그래야 하드코딩 하지 않고 좋을거 같네요.
이미 운영중이라면.. 하드코딩 ^^
좋은 하루 되세요.

WITH T (NUM, VALUE, NEW_YN) AS
 ( SELECT 1, 3 , 'N' FROM DUAL UNION ALL
 SELECT 3, 2 , 'N' FROM DUAL UNION ALL
 SELECT 8, 5.9 , 'N' FROM DUAL UNION ALL
 SELECT 10, 11 , 'Y' FROM DUAL UNION ALL
 SELECT 11, 2 , 'N' FROM DUAL UNION ALL
 SELECT 17, 2 , 'N' FROM DUAL
 )
SELECT A.*
 FROM (
 SELECT T.*
 , LAG(VALUE) OVER(ORDER BY NUM) AS BEF_VALUE --이전자료
 , LEAD(VALUE) OVER(ORDER BY NUM) AS AFT_VALUE --이후자료
 FROM T
 ) A
 WHERE A.NEW_YN = 'Y'
 AND A.BEF_VALUE = 5.9 ;


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