我试图建立一个日历,它似乎是工作正常。我怎么能包括一个假日列与'Y'的假日和'N',如果不是假日。
在下面的测试用例中,我希望2月8日假期为“Y”,所有其他行为“N”
CREATE TABLE holidays (holiday_date) AS
SELECT TRUNC(SYSDATE, 'YY') + INTERVAL '39' DAY FROM DUAL
with calendar as (
select rownum - 1 as daynum
from dual
connect by rownum <= to_date('28-feb-2023') - to_date('1-feb-2023') +1
)
select to_date('1-feb-2023') + daynum as monthdate
from calendar;
2条答案
按热度按时间o8x7eapl1#
我不确定
holidays
表的用途是什么,因为它只包含一行;然后,您有一个2023年2月的CTE(虽然不是 * 完美 *-如果您使用to_date
,那么也应用格式模型),并且它不使用以前创建的holidays
。无论如何:一个简单的选项是按原样创建
calendar
*(例如,对于2023年,直到 * 今天 *),并包括cb_holiday
列(cb
作为 * 复选框 *,其值为Y或N),默认为N,并在以后根据需要的日期进行更新。如果您不想在单独的语句中使用
update
表,可以-您可以在create table
中使用case
表达式:3yhwsihp2#