[질문]제품별 FROM TO 날짜를 구하려고 합니다. 0 3 1,187

by 기냥이 [SQL Query] [2013.01.03 15:13:57]



[기초데이터]

구분 날짜
A1 20120101
A2 20120501
A3 20121201
B1 20120301
B2 20120601
C1 20120701
C2 20120801
C3 20121001
C4 20121201

[결과]

구분 날짜_FR 날짜_TO
A1 20120101 20120501
A2 20120501 20121201
A3 20121201 99999999
B1 20120301 20120601
B2 20120601 99999999
C1 20120701 20120801
C2 20120801 20121001
C3 20121001 20121201
C4 20121201 99999999

[기초데이터] 같이 제품의 변경일자를 관리하던걸, 새로운 테이블을 만들어서 [결과]와 같이 만들어서

관리를 하려고 합니다.

select
prod_code,
dt,  
    lead(dt, 1) over (order by prod_code) next  
from
테이블

이렇게 작업을 하니..[결과]와 같이 제품별 처음일자/마지막일자(9999999)가 제대로 안나오네요.

부탁드리겠습니다..

부족한 부분을 알려주세요..ㅡㅡ;;
by 아발란체 [2013.01.03 15:21:04]
--올려주신 질의어에 NVL(DATA, '99999999') 함수만 추가 했습니다 ~ :)
WITH T(PROD_CODE, DT) AS (
  SELECT 'A1','20120101' FROM DUAL UNION ALL
  SELECT 'A2','20120501' FROM DUAL UNION ALL
  SELECT 'A3','20121201' FROM DUAL UNION ALL
  SELECT 'B1','20120301' FROM DUAL UNION ALL
  SELECT 'B2','20120601' FROM DUAL UNION ALL
  SELECT 'C1','20120701' FROM DUAL UNION ALL
  SELECT 'C2','20120801' FROM DUAL UNION ALL
  SELECT 'C3','20121001' FROM DUAL UNION ALL
  SELECT 'C4','20121201' FROM DUAL
)
SELECT
  PROD_CODE,
  DT, 
  NVL(LEAD(DT, 1) OVER (ORDER BY PROD_CODE), '99999999') NEXT  
FROM
  T

by 마농 [2013.01.03 15:22:44]

LEAD(dt, 1, '99991231') OVER(PARTITION BY SUBSTR(prod_code, 1, 1) ORDER BY dt) dt_to


by 기냥이 [2013.01.03 15:42:43]

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