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 架构修改列名称。
我们有一个现有的日历 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 架构修改列名称。