这可能之前已经讨论过(或者太简单了),但我找不到一个简单的答案:应该如何完成:选择(单个)最早的未来日期和每个 id 的最近日期?
t1: ==?==> (earliest) (most recent)
|id|date(DESC)| |id|future_date | past_date |
+==+==========+ +==+=============+===============+
|1 | d1 | | 1| d1 | d3 |
|2 | d2 | | 2| d2 | d6 |
(<==now) | 3| | d4 |
|1 | d3 |
|3 | d4 |
|1 | d5 |
|2 | d6 |
我正在按照以下思路进行思考,但我觉得这是相当复杂/糟糕的语法,而且我还没有弄清楚如何限制单个结果(即最近/将来最近)。有什么建议么?
SELECT t_1.id,t_1.date AS future_date,t_2.date AS past_date
FROM (SELECT * FROM t1 WHERE t1.date>CURRENT_TIMESTAMP) t_1
LEFT OUTER JOIN
(SELECT TOP 1 * FROM t1 WHERE t1.date<CURRENT_TIMESTAMP) t_2
ON t_1.id=t_2.id