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 |