SQL 日历 Table - 添加 WorkDayofMonth 列

SQL Calendar Table - Adding a WorkDayofMonth Column

我们有一个现有的日历 table - 但我想添加的是一个列,告诉我该月的工作日。例如,对于 Dec 20201,Wed Dec 1st 是第一天,因此应为 1,Mon Dec 6th 是第四个工作日,因此应为 4.

23 日(第 17 个工作日)之后,下一个工作日为 12 月 29 日。依此类推,直到您遇到新的一月,其中 1 月 4 日是第 1 天 - 该月的第一个工作日。

如果我要添加一个列“WorkDayofMonth”,是否有一个简单的更新可以应用到日历 table 并将值分配给这个新列?

在 SQL 服务器中,您可以使用更新table CTE,例如

alter table Calendar add WorkDayofMonth tinyint null;

with d as (
    select WorkDayofMonth,
      Row_Number() over(partition by CalendarMonth order by CalendarDate) n
    from Calendar
    where isWeekDay = 1 and isHoliday = 0
)
update d set WorkDayofMonth = n;

显然根据您的 table 架构修改列名称。