SQL中最近的日期

SQL中最近的日期,sql,sql-server,date,closest,Sql,Sql Server,Date,Closest,我正在尝试在SQL Server 2012中查找表A和表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 条件: 如果表A.Date=表B.DT,则表A.Date 如果表A.Da

我正在尝试在SQL Server 2012中查找
表A
表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
条件:

  • 如果表A.Date=表B.DT,则表A.Date
  • 如果表A.Date表B.DT,则以表B中较高的日期为准
期望输出:

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

有任何帮助或指导吗?

使用
交叉应用
顶部

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

使用
交叉应用
顶部

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

MSSQL Server 2012您是否有尝试过的sql?我对第一个条件进行了查询,但对于第二个条件,我无法生成概念MSSQL Server 2012您是否有尝试过的sql?我对第一个条件进行了查询,但对于第二个条件,我无法生成概念