【发布时间】:2021-03-12 17:18:33
【问题描述】:
我有一张表,我必须对其执行相当复杂的过滤:首先应用按日期过滤,但如果前几天和后几天的记录与其时差不超过 8 小时,则应包括在内上一条或下一条记录(取决于日期是小于还是大于过滤日期)。
对于那些相邻的日子,选择应该在不满足此条件的第一条记录处停止。
这是我的原始数据的样子:
| Id | Desc | EntryDate |
|---|---|---|
| 1 | Event type 1 | 2021-03-12 21:55:00.000 |
| 2 | Event type 1 | 2021-03-12 01:10:00.000 |
| 3 | Event type 1 | 2021-03-11 20:17:00.000 |
| 4 | Event type 1 | 2021-03-11 05:04:00.000 |
| 5 | Event type 1 | 2021-03-10 23:58:00.000 |
| 6 | Event type 1 | 2021-03-10 11:01:00.000 |
| 7 | Event type 1 | 2021-03-10 10:00:00.000 |
在这个示例集中,如果我的过滤日期是“2021-03-11”,我的预期结果集应该是当天的所有记录加上满足 8 小时条件的 03-12 和 03-10 的相邻记录。请注意如何不包含 ID 为 7 的记录,因为 ID 为 6 的记录不符合要求:
| Id | EntryDate |
|---|---|
| 2 | 2021-03-12 01:10:00.000 |
| 3 | 2021-03-11 20:17:00.000 |
| 4 | 2021-03-11 05:04:00.000 |
| 5 | 2021-03-10 23:58:00.000 |
需要建议如何编写这个复杂的查询
【问题讨论】:
标签: sql sql-server tsql