我正在创建一个报告,该报告将通过OBIEE进行分类,以根据起始日期之后的时间向相关最终用户发送电子邮件通知。
第一部分相对简单,效果很好;我创建了CASE WHEN语句来确定日期,然后根据该天为第三工作日添加一定天数
CASE WHEN day_of_week = '7' THEN ( report_date + 4 ) ELSE NULL END
这是硬编码的,可以完成所需的工作。但是,下一步更加复杂。我需要创建另一个列,该列动态显示第三天之后的每隔一个工作日(例如,如果今天是星期日,则此新列将显示从report_date到星期五的第5个工作日。下一个星期一应为NULL,但随后将在星期二再次填充。
我有一个非动态的解决方案,如代码块所示。
CASE
WHEN day_of_week = '7'
AND trunc(SYSDATE) IN (
( report_date + 6 ),
( report_date + 9 ),
( report_date + 11 )
) THEN SYSDATE
ELSE NULL
END
理想情况下,该通知将在第四个通知之后执行(report_date + 11),因此,如果我随后说服最终用户在第四个通知后的每个工作日接受一个通知,则此解决方案就足够了,但是很显然,是对要求的更改。
有什么办法可以创建一个执行此操作的顺序包?我尝试了一些基本的PLSQL顺序代码,但是OBIEE不允许我在数据模型中调用它。所以不确定包路由是否可行,或者我是否可以在数据模型本身的标准SQL中做些什么。