我有两张 table 。一个表是一个日历,具有一个 date
列和一个 kindofday
列。 kindofday
列包含“bankday”、“saturday”、“sunday”和“holiday”。我需要考虑假期,否则网上有几个查询可以工作......
date kindofday
1999-08-24 00:00:00:000 bankday
我正在努力构建一个可以计算给定日期的工作日数的查询。像这样的东西:
选择[日期] + 12 个工作日
。我不确定如何使用日历表作为引用 - 本质上我需要在此日历表中找到一个日期,然后对该列倒计时几个工作日并提取该日期。我会将其放入一个函数中,这样就不用担心复杂性。可能有一个我没有看到的愚蠢的简单解决方案。
我愿意接受任何考虑假期的解决方案,即使他们不使用我的日历表。我可以更改日历表,但是我需要这样做才能完成这项工作...即:使用 binary
而不是 string
'bankday' 等...
我已经尝试过:我已从日历中删除了所有非银行日并添加了一个integer
键,然后set @date =(从日历中选择键,其中@date=[ date]
,然后将工作日数添加到该键并返回日期,但问题是当 @date
是非银行工作日时,它在日历表中找不到匹配项...
最佳答案
将问题改写为“在 @start_date
之后的下一个 @count
个银行工作日中,哪一个出现在最后?”
SELECT @end_date = MAX(date)
FROM (
SELECT TOP(@count)
date
FROM Calendar
WHERE date > @start_date
AND kindofday = 'bankday'
ORDER BY date
) t
关于sql-server - 如何使用日历引用表在 SQL Server 中计算从给定日期开始的工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336510/