Oracle年曆【By Jackywood】

lastwinner發表於2005-12-25

jackywood原創,lastwinner小做修改:)

原文地址:http://www.itpub.net/469543.html

[@more@]

column next_year new_v next_year
set termout off
select to_char(add_months(sysdate,12),'yyyy') next_year from dual;
set termout on
accept year char prompt '請輸入日曆年份,預設為明年:' default &next_year;
set timing off
set autotrace off

set linesize 1000
set term off verify off feedback off pagesize 999
SET TRIMSPOOL ON

spool calendar&year..html
set heading off
select lpad(' ',30)||' Calendar of '||&year||' Year ' title from dual
/
set heading on

set markup html on entmap off spool on preformat off
alter session set nls_language=american;

select case
when (new_yweek = min(new_yweek)
over(partition by mon order by new_yweek)) then
mon_name
else
null
end as month,
new_yweek as yweek,
row_number() over(partition by mon order by new_yweek) as mweek,
sum(decode(wday, '1', mday, null)) as sun,
sum(decode(wday, '2', mday, null)) as mon,
sum(decode(wday, '3', mday, null)) as tue,
sum(decode(wday, '4', mday, null)) as wed,
sum(decode(wday, '5', mday, null)) as thu,
sum(decode(wday, '6', mday, null)) as fri,
sum(decode(wday, '7', mday, null)) as sat
from (select dayofyear as everyday,
to_char(dayofyear, 'mm') as mon,
to_char(dayofyear, 'Month') as mon_name,
to_char(dayofyear, 'w') as mweek,
to_char(dayofyear, 'ww') as yweek,
case
when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
(to_char(dayofyear, 'd') < to_char(to_date(&year || '0101', 'yyyymmdd'), 'd'))
then
to_char(to_char(dayofyear, 'ww') + 1, 'fm00')
else
to_char(dayofyear, 'ww')
end as new_yweek,
to_char(dayofyear, 'd') as wday,
to_char(dayofyear, 'dd') as mday
from (select to_date(&year || '0101', 'yyyymmdd') + level - 1 as dayofyear
from dual
connect by level <= to_char(to_date(&year || '1231', 'yyyymmdd'),'ddd')))
group by mon, mon_name, new_yweek
/

SPOOL OFF

set markup html off entmap off preformat on
set term on verify on feedback on pagesize 14
set linesize 80
prompt 日曆已生成

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-812261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章