질문드려요... 0 4 865

by 초짜 [2011.09.29 15:21:01]



varchar2 (3) 입니다.

999+1= A00,
  A99+1=B00 이런식으로 구성이 되야합니다.
코드를 이런식으로 999가 넘어가면 천이아니라 그담부터 알파벳순서로 올라갑니다.
저기 +1은 신규코드 생성시 기존맥스값에 1증가해서 그값을 신규코드로 잡는겁니다.
이것을 SQL로 처리 할려고 하는데 간단한 방법이 없을까요....
by 허재영 [2011.09.29 15:50:25]
A00 = 1000
B00 = 1099 + 1 = 1100
C00 = ?
규칙이 애매한데요.

1099 하고 1999 표기는 어떻게 되나요?

by 초짜 [2011.09.29 15:53:29]
그러니깐 999담이 천이아니라 A00 이런식으로..올라갑니다.
9까지 있는게
1~Z까지 쓰는거죠 Z99다음은 없습니다..

by 필상 [2011.09.29 16:07:11]
WITH T AS(
SELECT '003' AS NO FROM DUAL UNION ALL
SELECT '111' FROM DUAL UNION ALL
SELECT '999' FROM DUAL UNION ALL
SELECT 'A00' FROM DUAL UNION ALL
SELECT 'A77' FROM DUAL UNION ALL
SELECT 'A99' FROM DUAL UNION ALL
SELECT 'B10' FROM DUAL )
SELECT CASE WHEN T.NO < '999' THEN TO_CHAR(TO_NUMBER(T.NO) + 1, 'fm000')
WHEN T.NO = '999' THEN 'A00'
WHEN SUBSTR(T.NO, 2, 2) < '99' THEN SUBSTR(T.NO, 1, 1) || TO_CHAR(TO_NUMBER(SUBSTR(T.NO, 2, 2)) + 1, 'fm00')
ELSE CHR(ASCII(SUBSTR(T.NO, 1, 1)) + 1) || '00' END
FROM T

by 초짜 [2011.09.30 15:24:31]
필상님 좋은 조언 감사합니다. 보다 노력하겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입