날짜별 순번 쿼리에 대해서 질문드립니다. 0 3 3,024

by InSilence [SQL Query] [2011.01.19 13:47:52]



순번을 YYYYMMDD + 순번3자리를 메길려고 합니다.

그런데 문제가.. 제가 짠 쿼리로 하게 될시

20110118001
20110118002
20110118003
20110118004
20110119005
20110119006

이런식으로 메겨지게 되는데

20110118001
20110118002
20110118003
20110118004
20110119001
20110119002

이런식으로 메겨지게 할려면 어떻게 해야 할까요?

SELECT  TO_CHAR(SYSDATE,'YYYYMMDD') || (LPAD(NVL(MAX(SUBSTR(순번컬럼,-3)),0) + 1, 3, '0'))
   FROM  테이블명

이러식으로 했는데 이것저것 해보았으나 원하는 결과물이 나오지가 않네요..

고수분들의 조언이 필요합니다. ㅠㅠ
by camela [2011.01.19 13:59:06]
select nvl(max(cnt),to_char(sysdate,'YYYYMMDD')||'000') + 1
from t
where cnt like to_char(sysdate,'YYYYMMDD') || '%'

이런 식으로 하시면 될 거 같습니다.

by 봉 [2011.01.19 14:03:23]
with t as (
select '20110118' as dt, 1 num from dual union all
select '20110118' as dt, 2 num from dual union all
select '20110118' as dt, 3 num from dual union all
select '20110118' as dt, 4 num from dual union all
select '20110119' as dt, 5 num from dual union all
select '20110119' as dt, 6 num from dual
)
select dt || lpad(row_number() over(partition by dt order by dt, num asc),3,'0') as ddd
from t

by InSilence [2011.01.19 14:11:34]
감사합니다. ^^ 정말 감사합니다. 많은 도움이 되었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입