我现在要做一个存储过程,用来统计几类事件,每个事件都有单独的统计时间,比如统计事件1的时间范围是统计月上个月的最后一个工作日向前推2个工作日,像这样的存储过程,该怎么写呢?o(︶︿︶)o 唉,头疼!
解决方案 »
- 执行oemctl start oms后出现以下错误 急啊!!!!!!
- 股票正负面消息库——关键字
- 在oracle中建表出现ORA-00907: 缺少右括号错误,
- oracle pl-sql中如何在integer和string 间互相转换。
- 有一个30g的Oracle数据库dmp备份,有什么简单打开方法
- 报表是个啥东西请介绍一下,那有这方面的资料?谢谢!
- Oracle9i无自增字段,那按照别人写的触发器如下,在SQL*Plus中执行不对呢?帮我看看了。
- 急切求解!!!ORACLE的JOB运行存储过程与单独执行TEST运行存储过程是否会有很大的差别!
- 十分着急!!!等着用啦。。。。快帮忙呀
- oracle9i 与 oracle9i Application server 有何区别啊?
- 写好的java方法怎么由oracle触发器调用?
- 跟踪 后台 代码
根据你的题目,不能这样么,to_char(sysdate,'DAY')不是like('S%')开头的。
-- 测试数据 建立工作日维表 with tmp_work_tab as(
select trunc(sysdate-5) workdate, '1' is_work -- 0 非工作日 1 工作日
from dual union all
select trunc(sysdate-4) , '1' from dual union all
select trunc(sysdate-3) , '1' from dual union all
select trunc(sysdate-2) , '0' from dual union all
select trunc(sysdate-1) , '1' from dual)
-- 查询 SQL SELECT to_date('20110104','YYYYMMDD') - 2 - more_days "指定前2个工作日"
,to_date('20110104','YYYYMMDD') - 2 "指定前2天,包含非工作日"
from
(
-- 非工作日的天数
select COUNT(1) more_days -- to_date('20110104','YYYYMMDD') - 2
from tmp_work_tab
WHERE WORKDATE BETWEEN to_date('20110104','YYYYMMDD') - 2 AND to_date('20110104','YYYYMMDD')
AND IS_WORK = '0'
);指定前2个工作日 指定前2天,包含非工作日
--------------------------------------------------
2011-1-1 2011-1-2
实现思路:指定前2天工作日 = 指定日期 - 2 天 - (非工作日的天数)
可以求出某一天是一个星期中的第几天,注意是从星期天算起的.
有这个就很好办了吧,7 1两天不是工作日,其它的都是.