WITH T AS (
SELECT '2012' AS 년도 , '2' AS 학기 ,'A100' AS 과목 ,'01' AS 분반 ,'20121002' AS 휴강 FROM DUAL
UNION ALL SELECT '2012', '2' ,'A100' ,'01' ,'20121005' FROM DUAL
UNION ALL SELECT '2012', '2' ,'A100' ,'01' ,'20121015' FROM DUAL
UNION ALL SELECT '2012', '2' ,'A100' ,'01' ,'20121101' FROM DUAL
)
SELECT 년도, 학기 , 과목, 분반 , SUBSTR(휴강,5,2) AS 월
, REPLACE('Y('||SUM(DECODE( WEEK , 1 , 1))||')','Y()','N') "1주차"
, REPLACE('Y('||SUM(DECODE( WEEK , 2 , 1))||')','Y()','N') "2주차"
, REPLACE('Y('||SUM(DECODE( WEEK , 3 , 1))||')','Y()','N') "3주차"
, REPLACE('Y('||SUM(DECODE( WEEK , 4 , 1))||')','Y()','N') "4주차"
, REPLACE('Y('||SUM(DECODE( WEEK , 5 , 1))||')','Y()','N') "5주차"
FROM (
SELECT T.*
, CASE WHEN TO_CHAR( NEXT_DAY( TO_DATE( T.휴강) , 1) , 'MM') = TO_CHAR( TO_DATE (T.휴강), 'MM') THEN
CEIL(TO_NUMBER( (TO_CHAR( NEXT_DAY( TO_DATE( T.휴강) , 1),'DD'))) /7)
ELSE 5
END AS WEEK
FROM T
)
GROUP BY 년도, 학기 , 과목, 분반, SUBSTR(휴강,5,2)
with t as
( select '2012' 년도, '2' 학기, 'A100' 과목코드, '01' 분반코드, '20121002' 휴강일자 from dual union all
select '2012', '2', 'A100', '01', '20121005' from dual union all
select '2012', '2', 'A100', '01', '20121015' from dual union all
select '2012', '2', 'A100', '01', '20121101' from dual
)
select 년도
, 학기
, 과목코드
, 분반코드
, substr(휴강일자, 5, 2) 월
, replace('Y('||count(decode(to_char(to_date(휴강일자, 'yyyymmdd'), 'w'), 1, 1))||')','Y(0)','N') "1주차"
, replace('Y('||count(decode(to_char(to_date(휴강일자, 'yyyymmdd'), 'w'), 2, 1))||')','Y(0)','N') "2주차"
, replace('Y('||count(decode(to_char(to_date(휴강일자, 'yyyymmdd'), 'w'), 3, 1))||')','Y(0)','N') "3주차"
, replace('Y('||count(decode(to_char(to_date(휴강일자, 'yyyymmdd'), 'w'), 4, 1))||')','Y(0)','N') "4주차"
, replace('Y('||count(decode(to_char(to_date(휴강일자, 'yyyymmdd'), 'w'), 5, 1))||')','Y(0)','N') "5주차"
from t
group by 년도, 학기, 과목코드, 분반코드, substr(휴강일자, 5, 2)
order by 년도, 학기, 과목코드, 분반코드, substr(휴강일자, 5, 2)
;
주차 구하는 키워드 있었군요 'W'
배워가네요
저도 얼른 공부해서 답글 팍팍 달아드리고 싶네요 ㅋㅋ 오늘도 좋은 공부 하고 갑니다.