He intentado y me funcionó correctamente:
Código SQL:
Ver originalCREATE TABLE Ordr (ID INT, Fecha DateTime);
GO
INSERT INTO Ordr SELECT 1,'20120101'; --2 antes
INSERT INTO Ordr SELECT 2,'20120101'; --1 antes, 1 despues
INSERT INTO Ordr SELECT 3,'20120101'; --2 despues
INSERT INTO Ordr SELECT 4,'20120101'; --0
CREATE TABLE AITW (ID INT, Fecha DateTime);
GO
INSERT INTO AITW SELECT 1,'20110101';
INSERT INTO AITW SELECT 1,'20120101';
INSERT INTO AITW SELECT 2,'20110101';
INSERT INTO AITW SELECT 2,'20130101';
INSERT INTO AITW SELECT 3,'20130101';
INSERT INTO AITW SELECT 3,'20140101';
SELECT *
FROM ORDR T1
OUTER Apply (SELECT Top 1 *
FROM AITW T2
WHERE T2.ID=T1.ID
AND T2.Fecha<=T1.Fecha
ORDER BY T2.Fecha DESC) T21;
/*
ID Fecha ID Fecha
1 2012-01-01 00:00:00.000 1 2012-01-01 00:00:00.000
2 2012-01-01 00:00:00.000 2 2011-01-01 00:00:00.000
3 2012-01-01 00:00:00.000 NULL NULL
4 2012-01-01 00:00:00.000 NULL NULL
*/