В качестве теста я использовал предоставленные вами данные и запрос, которые дали следующий результат.
Обратите внимание, что зарплата 500 не возвращается, поскольку в предоставленных вами данных нет совпадения дат.
Результат
id date salary
----------- ----------------------- -----------
1 2009-02-01 00:00:00.000 NULL
1 2009-02-02 00:00:00.000 800
1 2009-02-28 00:00:00.000 NULL
2 2009-02-01 00:00:00.000 300
2 2009-02-02 00:00:00.000 NULL
2 2009-02-28 00:00:00.000 NULL
Сценарий
DECLARE @Table1 TABLE (ID INTEGER, Date DATETIME)
DECLARE @Table2 TABLE (ID INTEGER, Date DATETIME, Salary INTEGER)
INSERT INTO @Table1 VALUES (001, '02/01/2009')
INSERT INTO @Table1 VALUES (001, '02/02/2009')
INSERT INTO @Table1 VALUES (001, '02/28/2009')
INSERT INTO @Table1 VALUES (002, '02/01/2009')
INSERT INTO @Table1 VALUES (002, '02/02/2009')
INSERT INTO @Table1 VALUES (002, '02/28/2009')
INSERT INTO @Table2 VALUES (001, '02/02/2009', 800)
INSERT INTO @Table2 VALUES (001, '02/25/2009', 500)
INSERT INTO @Table2 VALUES (002, '02/01/2009', 300)
Select table1.id, table1.date, table2.salary
from @table1 table1
left outer join @table2 table2 on table1.id = table2.id and table1.date = table2.date