获取查询中的连续日期

时间:2018-01-25 03:47:05

标签: sql postgresql

我正在尝试查询Postgres数据库,以检索特定客户的记录,这些记录来自与当天相邻的日期。

例如:

  • 如果今天是星期三,它将从周一和周二提取记录(如果存在的话)。

  • 如果今天是星期三,如果星期二没有记录,它将不会从星期一开始记录。

  • 如果从上周三开始记录,如果它们存在,它将在周二和周四拉。

数据库当前使用包含以下内容的日期表进行构建:

 Id----------|------DateTime--------

Id与Customers表具有外键关系,包含:

CustomerId-------|-----DateId(fk)-----|----other columns.....

如果日期存在于查询日期之前和之后(并且如果存在则拉出该记录),我认为只是简单地查询数据库,然后循环使得成功将在.....之前或之后查询下一个日期.....但这似乎非常低效。

有没有更好的方法来获取这些记录?

编辑: 示例日期表:

Id    | DateTime
1     | '2018-01-23 16:19:17.600305'
2     | '2018-01-24 00:03:11.213492'
3     | '2018-01-25 03:10:14.911771'

示例客户表:

Id  |   DateId   |   CustomerId   |    Location1   |   Location2   |   Transport   
66  |     2      |       2        |     Market     |    Library    |   Car
67  |     2      |       3        |     Bookstore  |    Library    |   Car
68  |     3      |       3        |     Pool       |    Town       |   Car
69  |     3      |       3        |     Pool       |    Town       |   Bus

1 个答案:

答案 0 :(得分:0)

加入表并使用laglead窗口函数以及OVER (ORDER BY dates.datetime)等窗口子句。