こんな感じでしょうか。
※デバッグはしていませんので、Nullの考慮などが必要かもしれません。
SQL
1select ta.*, tb.*
2from ((
3 select *
4 , IIf(DateDiff("d", 出勤日, 以前直近売上日) >= DateDiff("d", 出勤日, 以降直近売上日), 以降直近売上日, 以前直近売上日) 売上日付
5 from (
6 select ta.担当CD, ta.出勤日
7 , DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 以前直近売上日
8 , DMin("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 >= #" & 出勤日 & "#") as 以降直近売上日
9 from テーブルA as ta
10 ) as t
11 ) as 基準
12 inner join テーブルA as ta
13 on 基準.担当CD=ta.担当CD
14 and 基準.出勤日=ta.出勤日
15 ) left join テーブルB as tb
16 on 基準.担当CD=tb.担当CD
17 and 基準.売上日付=tb.売上日付
18where 基準.担当CD='01'
19order by ta.担当CD, ta.出勤日 desc
追記
出勤日以降の売上日付は関係ないという事だと以下の様な感じ
SQL
1select ta.*, tb.*
2from ((
3 select ta.担当CD, ta.出勤日
4 , DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 売上日付
5 from テーブルA as ta
6 ) as 基準
7 inner join テーブルA as ta
8 on 基準.担当CD=ta.担当CD
9 and 基準.出勤日=ta.出勤日
10 ) left join テーブルB as tb
11 on 基準.担当CD=tb.担当CD
12 and 基準.売上日付=tb.売上日付
13where 基準.担当CD='01'
14order by ta.担当CD, ta.出勤日 desc
サブクエリーを使用するとこんな感じ。
SQL
1select ta.*, tb.*
2from ((
3 select ta.担当CD, ta.出勤日
4 , (select Max(売上日付) from テーブルB where 担当CD = ta.担当CD and 売上日付 <= ta.出勤日) as 売上日付
5 from テーブルA as ta
6 ) as 基準
7 inner join テーブルA as ta
8 on 基準.担当CD=ta.担当CD
9 and 基準.出勤日=ta.出勤日
10 ) left join テーブルB as tb
11 on 基準.担当CD=tb.担当CD
12 and 基準.売上日付=tb.売上日付
13where 基準.担当CD='01'
14order by ta.担当CD, ta.出勤日 desc
#追記2
出勤日と前の出勤日の間の売上日付の場合は以下
SQL
1select ta.*, tb.*
2from ((
3 select ta.担当CD, ta.出勤日
4 , DMax("出勤日", "テーブルA", "担当CD='" & 担当CD & "' and 出勤日 <= #" & 出勤日 & "#") as 前出勤日
5 from テーブルA as ta
6 ) as 基準
7 inner join テーブルA as ta
8 on 基準.担当CD=ta.担当CD
9 and 基準.出勤日=ta.出勤日
10 ) left join テーブルB as tb
11 on 基準.担当CD=tb.担当CD
12 and 基準.出勤日 >= tb.売上日付 and 基準.前出勤日 < tb.売上日付
13where 基準.担当CD='01'
14order by ta.担当CD, ta.出勤日 desc