我有这个sql脚本:
select 'LASTBUSDATE='|| to_char(max(calen_dt),'mmdd') LBD
from put_calen
where calen_dt < (select calen_dt from put_calen where ca_run_dt_ind = 'Y')
and business_day_ind = 'Y';
exit;
如何修改此设置,以便我在上个月的第一个工作日和最后一个工作日,如2-1-2011
和2-28-2011
请帮忙。不知道这里发生了什么。
答案 0 :(得分:0)
我在这里从您的列名称猜测您的表格结构,但是以下是否会返回您想要的内容?
select min(calen_dt) as first_business_day
,max(calen_dt) as last_business_day
from put_calen
where calen_dt >= trunc(sysdate,'MM') - interval '1' month
and calen_dt <= trunc(sysdate,'MM') - interval '1' day
and business_day_ind = 'Y';
如果sysdate =“2011-03-31 19:14:32”,则trunc(sysdate,'MM')
将返回“2011-03-01 00:00:00”;基本上截止到月份的日期。
您想要上个月的第一个工作日和最后一个工作日,因此我减去1个月到达上个月的第一个月,并在1个月到达上个月的最后一天。过滤器business_day_ind = 'Y'
可确保仅考虑最小/最大的工作日。
让我知道它是如何工作的,或者如果我错过了解你的问题和/或表格结构:)