2016-06-30 46 views
1

我想加入两张使用日期作为链接的表格,但是,我不想要完全匹配。第一个表格比第二个表格有更多日期,所以我希望匹配是从第二个表格到“最近”日期的日期。如何使用第一个相关日期连接两个表?

表1:

Date1 
2016-06-01 
2016-06-02 
2016-06-03 
2016-06-04 
2016-06-05 
2016-06-06 
2016-06-07 

表2:

Date2 
2016-06-01 
2016-06-05 
2016-06-07 

连接表

Date1   Date2 
2016-06-01 2016-06-01 
2016-06-02 2016-06-01 
2016-06-03 2016-06-01 
2016-06-04 2016-06-01 
2016-06-05 2016-06-05 
2016-06-06 2016-06-05 
2016-06-07 2016-06-07 

希望是有道理。

感谢,

SR

+4

'SQL-Server'或'MySQL'? – Arulkumar

回答

1

在MySQL中,你可以使用一个相关子查询:

SELECT Date1, (SELECT Date2 
       FROM Table2 
       WHERE Date2 <= t1.Date1 
       ORDER BY Date2 DESC LIMIT 1) AS Date2 
FROM table1 AS t1 

Demo here

在SQL Server,你可以使用CROSS APPLY

SELECT t1.Date1, t2.Date2 
FROM table1 AS t1 
CROSS APPLY (
    SELECT TOP 1 Date2 
    FROM table2 
    WHERE Date2 <= t1.Date1 
    ORDER BY Date2 DESC) AS t2 
0

我假设您使用的是SQL Server。它与Giorgos Betsos相似

Declare @Table1 Table(Date1 date) 
Insert into @Table1 values 
('2016-06-01') 
,('2016-06-02') 
,('2016-06-03') 
,('2016-06-04') 
,('2016-06-05') 
,('2016-06-06') 
,('2016-06-07') 

Declare @Table2 Table(Date2 date) 
Insert into @Table2 values 

('2016-06-01') 
,('2016-06-05') 
,('2016-06-07') 

SELECT Date1, (SELECT top 1 Date2 
       FROM @Table2 
       WHERE Date2 <= t1.Date1 
       order by Date2 desc) AS Date2 
FROM @table1 AS t1 
+0

感谢您为创建示例。这对确认查询非常有帮助 – user6532473

相关问题