질문드립니다.. 0 2 1,411

by 신재경 [2008.07.08 16:03:39]


안녕하세요... 항상 많은 도움을 받고만 있습니다.. ㅎㅎ ^^;;

 

제목을 이따구로 올리면 안된다는 걸 알고는 있지만,

어떻게 제목을 잡아야 할지 잘 모르겠어서 이따구로 올렸습니다.. 죄송... (_ _)   적당한 제목도 올려주심 적용하도록 하겠습니다...

 

오늘도 질문하나 올립니다..

Table A

Group_no Seq First_no Last_no
A 1 10 20
A 2 15 27
B 1 10 40
B 2 30 70
B 3 70 100

위와같은 테이블 A가 있을때,(약 10000건 정도의 Row 존재)

결과값을 아래처럼

Group_no Seq First_no Last_no Gap
A 1 10 20 5
A 2 15 27 0
B 1 10 40 10
B 2 30 70 0
B 3 70 100 0

얻고자 합니다.

설명드리자면, 결과데이터의 Group_no부터 Last_no 컬럼은 원래 테이블 A의 컬럼값을 그대로 보여주고

Gap의 값은 Group_no별로 Grouping했을때

현재의 Seq보다 1이 큰 Row의 First_no와 현재Row의 Last_no 차이를 보여줍니다.(위 결과값에 같은 색으로 칠해진 부분..)  Group_no별 Seq가 가장 큰 값이면 Gap의 값은 0이구요..

제약조건이라면... 테이블은 한번만 읽고 가능해야합니다.. From절에 딱 한번만 와야...^^;;;

 

고수님들의 많은 관심 부탁드립니다.. (__)

by 채용근 [2008.07.08 16:32:21]
SELECT GROUP_NO, SEQ, FIRST_NO, LAST_NO
, LAST_NO - LEAD( FIRST_NO, 1, LAST_NO ) OVER ( PARTITION BY GROUP_NO ORDER BY SEQ ) FROM TAB#

by 신재경 [2008.07.09 08:26:27]
하핫!! 채용근님 감사합니다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입