选择日期之间的所有行

我有一个 #tmp 表,如下所示。一共有三行。

标题 收据日期 decision_date
“没有我想象的那么糟糕” 2017-06-12 15:07:10.893 2017-06-23 09:37:31.667
“没有我想象的那么糟糕” 2017-07-11 10:35:24.337 2018-06-25 05:54:41.133
“没有我想象的那么糟糕” 2017-09-25 14:06:18.670 2017-11-21 05:13:08.563

代码应该遍历三行中的每一行,并且(基于当前迭代的行)从整个表中选择 receive_datereceive_date 和 {{1} 之间的所有行} 在任何其他行上。

注意:我专门使用了大于和小于(相对于大于或等于),这样行就不会自选。

注意:decision_date 晚于 2017-09-25 14:06:18.670 但早于 2017-07-11 10:35:24.337,因此该行应在选择中返回。但我从选择中一无所获。

我在 SSMS 中运行代码

代码

2018-06-25 05:54:41.133
ayangyy 回答:选择日期之间的所有行

破解你的问题并不容易。你应该发布了一个正确的example!但据我所知,听起来您可以简单地使用 EXISTS 和相关子查询。

SELECT *
       FROM #tmp t1
       WHERE EXISTS (SELECT *
                            FROM #tmp t2
                            WHERE t2.receipt_date < t1.receipt_date
                                  AND t2.decision_date >= t1.receipt_date);

db<>fiddle

本文链接:https://www.f2er.com/640.html

大家都在问