안녕하세요. 오라클에서 키 코드를 자동생성 할려고 하는데 이게 select 로 잘 안나오네요 ㅠㅠ
일단 자동생성할려는 키값의 기본 구조는 A01-01 입니다.
새로운 값이 저장 되면 A01 , A02 가 +1 씩 앞에 증가하고 만약 A01이 이미 들어가 있는 상태에서 다시 A01을 저장하게 되면
뒤에 01에 +1을 해서 +02 를 붙여 줍니다. 그러면 A01-02 가 저장 되겠죠
예를들어 테이블에 데이터가 비어있는 상태에서 5개의 데이터 ( AA,BB,CC,DD,EE) 를 넣는다 하면
키값 AA, BB,CC,DD,EE 가 저장되면서
A01-01,A02-01,A03-01,A04-01,A05-01
라고 이런식으로 5개 생성이 되면 됩니다.
이렇게 데이터가 들어가 있는상태에서 다시
( FF , GG ,HH ,AA ,II) 이렇게 AA가 중복되게 5개 저장하면 키값이
A06-01,A07-01,A08-01,A01-02,A09-01
이런식으로 중복 데이터 처리하고 채번되는 키값을 생성하는 건데....
이부분이 좀 어렵네요... ㅠㅠ
WITH t AS ( -- 원본 -- SELECT 'AA' cd, 'A01-01' seq FROM dual UNION ALL SELECT 'BB', 'A02-01' FROM dual ) SELECT NVL( SUBSTR(b.seq, 1, 4) || LPAD(SUBSTR(b.seq, 5, 2) + 1, 2, '0') , 'A' || LPAD(NVL(SUBSTR(a.seq, 2, 2) + 1, 1), 2, '0') || '-01' ) new_seq FROM (SELECT MAX(seq) seq FROM t) a , (SELECT MAX(seq) seq FROM t WHERE cd = 'AA') b -- 있던 거 추가 -- , (SELECT MAX(seq) seq FROM t WHERE cd = 'CC') b -- 없는 거 추가 ;