【发布时间】:2021-12-17 01:31:09
【问题描述】:
我正在尝试根据下表中的数据找出如何返回开始日期和结束日期:
| Name | Date From | Date To |
|---|---|---|
| A | 2022-01-03 | 2022-01-03 |
| A | 2021-12-29 | 2021-12-31 |
| A | 2021-12-28 | 2021-12-28 |
| A | 2021-12-27 | 2021-12-27 |
| A | 2021-12-23 | 2021-12-24 |
| A | 2021-11-08 | 2021-11-09 |
我追求的结果会是这样的:
| Name | Date From | Date To |
|---|---|---|
| A | 2021-12-23 | 2022-01-03 |
| A | 2021-11-08 | 2021-11-09 |
第一个表中的日期有时会超过周末,日期从和日期到,但如果该行在星期五结束,下一行从下一个星期一开始,则需要将其归类为相同的“块” ,如第二个表所示。根据How do I exclude Weekend days in a SQL Server query?,我希望使用DATEFIRST 设置来满足周末的需求,以避免使用日历表,但如果日历表最终成为最简单的方法,我很乐意考虑创建一个。
在上面的示例中,我只有 1 个名称,但表格将有多个名称,并且需要按此分组。
我看到的唯一示例是仅使用 1 个日期列进行记录,我努力更改他们的代码以适应我的示例。我发现的最接近的例子对我不起作用,因为它基于日期时间字段和时差 - find start and stop date for contiguous dates in multiple rows
【问题讨论】:
-
我不明白结果。为什么
2021-12-24与2021-12-27相隔 3 天时“连续”? -
@Larnu 道歉,我忘了说它需要忽略周末。
-
似乎是时候“投资”日历表了。
-
@Larnu 在 SQL Server 上设置
DATEFIRST是不可能的吗?我试图避免使用日历表。 -
“我试图避免使用日历表。” 为什么?
标签: sql sql-server ssms