본문 바로가기
Oracle(DB관련)

달력 query

by xfree302 2009. 7. 17.
반응형

select min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 1, b.no)) "일",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 2, b.no)) "월",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 3, b.no)) "화",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 4, b.no)) "수",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 5, b.no)) "목",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 6, b.no)) "금",
      min(decode(mod((b.no + to_char(to_date('20090601','yyyymmdd'),'d') - 1) , 7), 0, b.no)) "토"
from copy_t b
where b.no between 1 and to_char(last_day(to_date('200906','yyyymm')),'dd')
group by ceil((b.no + to_char(to_date('20090601','yyyymmdd'),'d') -1) / 7)
order by nvl(일,0)

달력 query입니다.
copy_t 테이블은 no컬럼 하나에 1부터 31까지 값이 있습니다.

반응형

'Oracle(DB관련)' 카테고리의 다른 글

순서정하기 rank()  (0) 2009.11.04
sys_connect_by_path row데이터를 column데이터로  (0) 2009.11.04
merge into 있으면 update, 없으면 insert  (0) 2009.11.03
페이징 처리 sql  (0) 2009.10.29
join update  (0) 2009.10.28