3,491
社区成员
发帖
与我相关
我的任务
分享
-- 测试数据 建立工作日维表
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