【发布时间】:2020-08-28 15:34:41
【问题描述】:
我有两张表,一张用于时间表日期:
+--------+---------+
| intDay | DayName |
+--------+---------+
| 1 | Mon A |
| 2 | Tue A |
| 3 | Wed A |
| 4 | Thu A |
| 5 | Fri A |
| 6 | Mon B |
| 7 | Tue B |
| 8 | Wed B |
| 9 | Thu B |
| 10 | Fri |
+--------+---------+
还有一个带有学期日期的表格:
+-----------+------------+------------+
| Term Name | Term Start | Term End |
+-----------+------------+------------+
| Term A | 07/09/2020 | 15/12/2020 |
| Term B | 10/01/2021 | 15/03/2021 |
| Term C | 01/04/2021 | 03/07/2021 |
+-----------+------------+------------+
我可以使用第三个表格,其中包含日历周数以及是 A 周还是 B 周。
这个结构是:
+-------------+---------+---------+
| intYearWeek | intYear | intWeek |
+-------------+---------+---------+
| 37 | 2020 | 1 |
| 38 | 2020 | 2 |
| 39 | 2020 | 1 |
| 40 | 2020 | 2 |
| 41 | 2020 | 1 |
| 42 | 2020 | 2 |
+-------------+---------+---------+
intYearWeek 是一年中的日历周数,intYear 是学年(9 月至 7 月),A 周和 B 周分别表示为 1 或 2。这些只是教学周,因此不包括任何假期周。
我想做的是使用上述两周周期生成整个学年的日历日期列表,但仅限于学期期间。我会将这些与教职员工和学生的时间表相匹配,以生成 Outlook 导入。
因此,如果我们采用第 37-40 周(2020 年 9 月 7 日 - 2020 年 9 月 28 日),结果将如下所示:
+-----------------+------------+
| Week_Number Day | Date |
+-----------------+------------+
| 37 Mon A | 07/09/2020 |
| 37 Tue A | 08/09/2020 |
| 37 Wed A | 09/09/2020 |
| 37 Thu A | 10/09/2020 |
| 37 Fri A | 11/09/2020 |
| 38 Mon B | 14/09/2020 |
| 38 Tue B | 15/09/2020 |
| 38 Wed B | 16/09/2020 |
| 38 Thu B | 17/09/2020 |
| 38 Fri B | 18/09/2020 |
| 39 Mon A | 21/09/2020 |
| 39 Tue A | 22/09/2020 |
| 39 Wed A | 23/09/2020 |
| 39 Thu A | 24/09/2020 |
| 39 Fri A | 25/09/2020 |
| 40 Mon B | 28/09/2020 |
| 40 Tue B | 29/09/2020 |
| 40 Wed B | 30/09/2020 |
| 40 Thu B | 01/10/2020 |
| 40 Fri B | 02/10/2020 |
+-----------------+------------+
提前感谢您的帮助!
【问题讨论】:
-
请向我们展示您想要的结果。
-
您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称(日期/时间函数是特定于供应商的)。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS
-
@GMB 我已经添加了结果和我正在使用的数据库产品(SQL Server 2019)。抱歉,我不知道如何格式化表格。
-
我认为有必要在正确的年份进行细分和大小写,并将 1/2 与 A/B 相匹配,即使如此,第 37 周的报告如何包括第 40 周也有点失落。
-
@DavidG.Pickett 我已经编辑了结果,结果显示的是从学期开始算起的 4 周,而不仅仅是第一周。
标签: sql sql-server date recursive-query