Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143976
  • 博文数量: 161
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -30
  • 用 户 组: 普通用户
  • 注册时间: 2017-09-21 21:45
文章分类
文章存档

2009年(1)

2008年(74)

2007年(48)

2006年(38)

我的朋友

分类: Oracle

2006-11-02 16:34:32

生成年度日历(Oracle SQLPLUS版)的html文档(zt)


/************************************************************
生成年度日历(Oracle SQLPLUS版)的html文档
Ref: http://www.itpub.net/469543.html

*************************************************************/
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 linesize 1000
set term off verify off feedback off pagesize 999
SET TRIMSPOOL ON

set markup html on entmap ON spool on preformat off
spool e:calendar&year..html
set heading off
select lpad(' ',30)||&year||'年度日历(Oracle SQLPLUS版)' title from dual
/
set heading on

--set markup html on entmap on 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

阅读(1097) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~