전버전정보 현버전 정보를 한로우로 뽑고 싶습니다 0 1 1,141

by woni_rang [SQL Query] [2015.10.29 18:43:26]


안녕하세요
쿼리에 대해서 여쭤보고자 글남깁니다
폰으로 작성하고 있어서 오타나 설명이 충분치 않더라도 이해 부탁드립니다
쿼리에서 뽑고자 하는 데이터가 한테이블에서 version이라는 컬럼으로 버전이 관리가 될때
이전버전 정보와 현버전 정보를 하나의 로우로 보고자 합니다

간략하게해서
Uid, juminno, name, age, version
이런 테이블이면
Juminno가 같지만 버전을 다르게해서 여러개 가질수 있다하면
결국 보고 싶은 결과는
Juminno, 이전name, 이전age, 이전version, 현재name, 현재age, 현재version
이 됩니다
화면에서 조회조건으로 보내주는건 juminno, 현재version 정도가 됩니다

막 짜면 만들기야 하겠는데 더 좋은 방법을 얻고자 여쭤보니 도움 부탁드립니다

 

by 오라클초보 [2015.10.30 08:38:10]

LAG 함수를 이용하면 이전Row의 정보를 가져 올 수 있습니다..

 

With TMP AS (
Select '123456-1234567' juminno, '홍길동' tname, 10 age, 1 VER From Dual Union All
Select '123456-1234567' juminno, '동길홍' tname, 11 age, 2 VER From Dual 
)
Select juminno,
       LAG(tname,1, '') Over (PARTITION BY juminno Order By juminno, VER) OldName,
       LAG(age,1, '') Over (PARTITION BY juminno Order By juminno, VER) Oldage,
       LAG(VER,1, '') Over (PARTITION BY juminno Order By juminno, VER) OdlVER,
       tname, age, VER
  From TMP;

 

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