SQL中最近的日期

时间:2017-07-27 21:38:02

标签: sql sql-server date closest

我想在SQL Server 2012中找到Table_ATable_B之间的最近日期或实际日期

表-A

Date
-------
2017-07-15 00:00:00
2017-07-27 00:00:00
2017-07-23 00:00:00

表-B

DT
------
2017-07-17 00:00:00
2017-07-19 00:00:00
2017-07-23 00:00:00
2017-07-28 00:00:00

条件:

  • 如果Table_A.Date = Table_B.DT则Table_A.Date
  • 如果table_A.Date<> Table_B.DT然后是Table_B中下一个更高的日期

期望的输出:

Date
-----
2017-07-17 00:00:00
2017-07-23 00:00:00
2017-07-28 00:00:00

任何帮助或指导?

1 个答案:

答案 0 :(得分:3)

使用CROSS APPLYTOP

SELECT 
    Date = x.DT
FROM Table_A a
CROSS APPLY(
    SELECT TOP(1) DT
    FROM Table_B b
    WHERE b.DT >= a.Date
    ORDER BY b.DT
) x
ORDER BY x.DT