Wie man zwei Tabellen mit dem ersten relevanten date verbindet?

Ich möchte an zwei Tabellen mit dem date als Link join, aber ich möchte keine genaue Übereinstimmung. Der erste Tisch hat mehr Termine als der zweite, also möchte ich, dass das Spiel von der zweiten Tabelle bis zum 'nächsten' date datiert.

Beispiel

Tabelle 1:

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

Tabelle 2:

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

Beigetreten Tisch

 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 

Hoffe das macht Sinn.

Vielen Dank,

SR

In MySql kannst du eine korrelierte Unterabfrage verwenden:

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

Demo hier

In SQL server können Sie 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 

Ich nehme an, Sie verwenden SQL server. Es ist ähnlich wie Giorgos Betsos Post

 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