【发布时间】:2017-06-03 04:14:55
【问题描述】:
我有一张记录用户休假日的表格。 一个示例是:
+---------+------------+---------+------------+ |国家 |用户名 |用户 ID | vac_date | +---------+------------+---------+------------+ |加拿大 |詹姆斯 | 1111 | 2015-02-13 | |加拿大 |詹姆斯 | 1111 | 2015-02-17 | |加拿大 |詹姆斯 | 1111 | 2015-02-18 | |加拿大 |詹姆斯 | 1111 | 2015-02-10 | |加拿大 |詹姆斯 | 1111 | 2015-02-11 | +---------+------------+---------+------------+根据上述数据,从 2 月 13 日到 2 月 18 日,计数为 3,因为 14 日和 15 日是周末,而 16 日是加拿大的假期。所以本质上,如果用户在下一个工作日休假,我会尝试保留并继续计数。我还有一张包含所有假期的表格,其中包括国家和假期日期。假日表的示例数据为:
+---------+-------------+-------------+ |国家 |假日Desc |假期日期 | +---------+-------------+-------------+ |加拿大 |家庭日 | 2015-02-16 | +---------+-------------+-------------+目前我在 SQL 中有一个查询通常计算日期,所以它只计算假期表中的任何内容。例如:如果用户在 2015 年 3 月 3 日、2015 年 3 月 4 日和 2015 年 3 月 5 日休假,则计数为 3,但对于上表示例,2 月 13 日和 2 日的计数仅为 1 2月17日至2月18日。
这是它当前从上述示例数据中输出的内容:
+-----------+------------+------------+----------- --------+ |用户名 |开始日期 |结束日期 |连续计数 | +-----------+------------+------------+----------- --------+ |詹姆斯 | 2015-02-10 | 2015-02-11 | 2 | |詹姆斯 | 2015-02-13 | 2015-02-13 | 1 | |詹姆斯 | 2015-02-17 | 2015-02-18 | 2 | +-----------+------------+------------+----------- --------+理想情况下,我希望它是:
+-----------+------------+------------+----------- --------+ |用户名 |开始日期 |结束日期 |连续计数 | +-----------+------------+------------+----------- --------+ |詹姆斯 | 2015-02-10 | 2015-02-11 | 2 | |詹姆斯 | 2015-02-13 | 2015-02-18 | 3 | +-----------+------------+------------+----------- --------+但我不知道纯 SQL 是否可行。我也可以尝试将其合并到 C# 中。
如果有帮助,我也在使用 C# 和 SQL Server Management Studio。任何帮助,将不胜感激。提前致谢
【问题讨论】:
-
这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
对不起格式,我修好了表格。如果还有其他事情,请告诉我。
-
假期表呢? :D
-
我还添加了一个假期表样本。如果还有其他事情,请告诉我。
-
我不清楚。您要计算二月第二周(02/8 至 02/14)或之后一周(02/15 至 02/21)的连续工作日吗?或者整个二月?
标签: c# sql sql-server