【发布时间】:2017-12-31 21:47:42
【问题描述】:
我在按 product_id 比较分区中的一个日期时遇到问题。我需要检查 date_to desc 排序的最后一个 date_to 是否在 date_from 和 date_to 之间。
下面是分区示例:
product_id | date_from | date_to
1 | 2017-01-01| 2019-05-01
1 | 2017-04-15| 2017-06-10
1 | 2017-03-15| 2017-03-25
1 | 2017-01-19| 2017-02-01
如何检查最后一行中的日期是否在 product_id 分区中的任何日期范围之间。这个订单必须是完整的。我尝试使用 LAG 函数,但它只会检查以前的范围,我尝试使用 min(date_from) 和 max(date_to) 即使在这里也会有问题,因为 min 来自第一行,max 来自第二行,并且资格是错误的,因为我需要按产品检查每个日期范围,而不是整个范围。解决方案将检查:
*2017-02-01(分区的第一行)2017-01-01 和 2019-05-01(真)
*2017-02-01(分区的第二行)2017-04-15 和 2017-06-10(FALSE)之间
*2017-02-01 (第三行分区) 2017-03-15 和 2017-03-25 (FALSE) 之间
结果:是的!日期在某个日期范围之间;)好的,只需标志 1 就足够了 :)
如果您能提供任何帮助,我将不胜感激,对我的英语感到抱歉:)
编辑: 当前的问题是如何按照以前的范围检查每个 date_to。例如
(第二个 date_to) 2017-06-10 之间 (第一行) 2017-01-01| 2019-05-01
(第三个date_to) 2017-03-25 之间(第一行) 2017-01-01| 2019-05-01 和(第三个 date_to)2017-03-25 之间(第二行)2017-04-15| 2017-06-10
等等
【问题讨论】: