【发布时间】:2017-09-07 22:55:57
【问题描述】:
我正在尝试在 mySQL 中完成一些事情,这很困难,因为缺少“滞后”功能以及我读过的所有关于日期差异的示例,因为在所有这些示例中,总是有一个 ID一次约会。在这里,我试图在一个 ID 内做日期差异,当日期差异超过 60 时,返回一个指示符 1,否则返回 0。
不确定解决此问题的最佳方法是什么。是否将 row_number() 与日期结合使用?障碍是在多个 ID 中执行此操作,因为我阅读的很多内容都没有涵盖这一点。任何方向都会有所帮助。 谢谢!
ID | Service Date | Date Difference | Indicator
1 | 1/22/2016 | 0 | 1
1 | 3/26/2016 | 64 | 1
1 | 5/25/2016 | 60 | 0
1 | 9/15/2016 | 113 | 1
2 | 8/1/2016 | 0 | 1
3 | 1/26/2016 | 0 | 1
3 | 3/9/2016 | 43 | 0
3 | 4/30/2016 | 52 | 0
4 | 8/9/2016 | 0 | 1
5 | 11/19/2016 | 0 | 1
6 | 10/14/2016 | 0 | 1
7 | 1/31/2016 | 0 | 1
7 | 8/11/2016 | 193 | 1
【问题讨论】:
-
mysql也不能使用行号。
-
使用用户变量来保存上一行的日期,然后使用
DATEDIFF(service_date, @previous_date)得到差异。 -
您还需要一个用于之前 ID 的变量。当 ID 发生变化时,您重新开始。
-
像这样让行相互依赖有点难闻。是否还有其他分类依据,例如用户ID?也许您可以尝试将引用/外键(在自己上)存储到该行的先前服务。