sql-server - 如何使用日历引用表在 SQL Server 中计算从给定日期开始的工作日

标签 sql-server date count calendar

我有两张 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/

相关文章:

r - 如何计算条件的 TRUE 值,直到在 R 中找到 FALSE

mysql - 需要结合2个mysql查询

mysql - SQL 连接一列中缺少值

sql - ORDER BY 取决于参数导致错误

sql-server - 使用 CTE 的存储过程来查询 Category 、 Sub Category 、 Sub Sub Category

PHP 日期 - Unix 时间戳

android - 仅在 android 中的 Lollipop 5.0 中显示带有月份和年份的日期选择器

mysql - rails COUNT SELECT DISTINCT

sql - TSQL 返回存在的内容

带有序号指示符的月中日期的java日历显示名称样式