년별, 월별 주차구하는 것에 질문드립니다.ㅠㅠ 0 5 3,739

by 손님 [SQL Query] 주차 [2012.07.19 10:44:37]



안녕하세요.

이번에 주차가 들어가는 작업을 하는 중에..

4일동안...ㅠㅠ 아무리 찾아도 답이 나오질 않아 글을 올리게됬습니다.

주차 기준은 일요일~토요일 기준이구요.
형식은 아래와 같습니다.

검색조건 입력

  시작일   종료일
20101230 -   20110302

년별 | 월별 |    시작일   | 종료일
  52  |   4    | 20101226 |  20110101 
  1    |   1    |20110102  | 20110108
  2    |   2    |20110109  | 20110115
  3    |   3    |20110116  | 20110122
  4    |   4    |20110123  | 20110129
  5    |   5    |20110130  | 20110205
  6    |   1    |20110206  | 20110212
.
.
.

위와 같이 나오도록 쿼리를 짜고싶은데...ㅠㅠ
너무 힘드네요..ㅠㅠ 살려주세요 ㅠㅠ
by 김정식 [2012.07.19 13:37:43]
혹시 아래 IW, W 포맷을 찾으시는 건지요..

SELECT TO_CHAR(SYSDATE,'IW') "ISO 표준 주차(년별 주차)"  FROM DUAL;
SELECT TO_CHAR(SYSDATE,'W') "월별 주차" FROM DUAL;

by 손님 [2012.07.19 13:45:00]

select to_char(to_date(s_dat), 'ww') ww_y,
   ceil((substr(s_dat,-2) + to_char(to_date(substr(s_dat,1,6)||'01'),'d') - 1) / 7)
   - decode(to_char(to_date(substr(s_dat,1,6)||'01'),'d'), 1, 0, 1) ww_m,
   s_dat, e_dat
  from
  (select min(decode(d, 1, dat)) s_dat,
  min(decode(d, 7, dat)) e_dat
from
(select to_char(to_date('20101230') - 7 + level - 1, 'yyyymmdd') dat,
to_char(to_date('20101230') - 7 + level - 1, 'd') d, rownum rn
    from dual
  connect by level <= (to_date('20120731') + 7) - (to_date('20101230') - 7))
    where d in ('1','7')
    group by decode(d, 1, rn+6, rn)
   having min(decode(d, 1, dat)) is not null
  and min(decode(d, 7, dat)) is not null
    order by 2)

by 손님 [2012.07.19 13:49:29]

아..감사합니다..ㅠ0ㅠ
ㅠㅠ 주차쓴적이 없어서; 갑자기 주차가 나오니 힘들었는데
고맙습니다..ㅠㅠ 차근차근 어찌돌아가는 건지 보고 적용해봐야 겠네요 ㅠ
다시한번 감사합니다. ㅠ

by 마농 [2012.07.19 13:49:37]
WITH t AS
(
SELECT TO_DATE('20101230', 'yyyymmdd') sdt
     , TO_DATE('20110302', 'yyyymmdd') edt
  FROM dual
)
SELECT TO_CHAR(sdt, 'ww') ww
     , TO_CHAR(sdt, 'w')  w
     , TO_CHAR(sdt, 'iw')  iw
     , TO_CHAR(sdt, 'yyyymmdd') sdt
     , TO_CHAR(sdt + 6, 'yyyymmdd') edt
  FROM (
        SELECT TRUNC(sdt, 'd') + LEVEL*7 - 7 sdt
          FROM t
         CONNECT BY LEVEL <= (TRUNC(edt, 'd') - TRUNC(sdt, 'd'))/7 + 1
        )
;

by 손님 [2012.07.19 16:07:56]

감사합니다^-^

ㅠㅠ 에고..나름 열심히 한다고는 하는데

오라클...아직 배울게 너무 많네요 ㅠ

감사합니다^^

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