回答編集履歴

7

追記

2021/08/03 06:23

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -80,6 +80,40 @@
80
80
 
81
81
  ```
82
82
 
83
+ サブクエリーを使用するとこんな感じ。
84
+
85
+ ```SQL
86
+
87
+ select ta.*, tb.*
88
+
89
+ from ((
90
+
91
+ select ta.担当CD, ta.出勤日
92
+
93
+ , (select Max(売上日付) from テーブルB where 担当CD = ta.担当CD and 売上日付 <= ta.出勤日) as 売上日付
94
+
95
+ from テーブルA as ta
96
+
97
+ ) as 基準
98
+
99
+ inner join テーブルA as ta
100
+
101
+ on 基準.担当CD=ta.担当CD
102
+
103
+ and 基準.出勤日=ta.出勤日
104
+
105
+ ) left join テーブルB as tb
106
+
107
+ on 基準.担当CD=tb.担当CD
108
+
109
+ and 基準.売上日付=tb.売上日付
110
+
111
+ where 基準.担当CD='01'
112
+
113
+ order by ta.担当CD, ta.出勤日 desc
114
+
115
+ ```
116
+
83
117
  #追記2
84
118
 
85
119
  出勤日と前の出勤日の間の売上日付の場合は以下

6

追記

2021/08/03 06:22

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -79,3 +79,39 @@
79
79
  order by ta.担当CD, ta.出勤日 desc
80
80
 
81
81
  ```
82
+
83
+ #追記2
84
+
85
+ 出勤日と前の出勤日の間の売上日付の場合は以下
86
+
87
+ ```SQL
88
+
89
+ select ta.*, tb.*
90
+
91
+ from ((
92
+
93
+ select ta.担当CD, ta.出勤日
94
+
95
+ , DMax("出勤日", "テーブルA", "担当CD='" & 担当CD & "' and 出勤日 <= #" & 出勤日 & "#") as 前出勤日
96
+
97
+ from テーブルA as ta
98
+
99
+ ) as 基準
100
+
101
+ inner join テーブルA as ta
102
+
103
+ on 基準.担当CD=ta.担当CD
104
+
105
+ and 基準.出勤日=ta.出勤日
106
+
107
+ ) left join テーブルB as tb
108
+
109
+ on 基準.担当CD=tb.担当CD
110
+
111
+ and 基準.出勤日 >= tb.売上日付 and 基準.前出勤日 < tb.売上日付
112
+
113
+ where 基準.担当CD='01'
114
+
115
+ order by ta.担当CD, ta.出勤日 desc
116
+
117
+ ```

5

修正

2021/08/03 05:42

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  select ta.担当CD, ta.出勤日
58
58
 
59
- , DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and ta.売上日付 <= #" & 出勤日 & "#") as 売上日付
59
+ , DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 売上日付
60
60
 
61
61
  from テーブルA as ta
62
62
 

4

追記

2021/08/03 05:38

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -43,3 +43,39 @@
43
43
  order by ta.担当CD, ta.出勤日 desc
44
44
 
45
45
  ```
46
+
47
+ # 追記
48
+
49
+ 出勤日以降の売上日付は関係ないという事だと以下の様な感じ
50
+
51
+ ```SQL
52
+
53
+ select ta.*, tb.*
54
+
55
+ from ((
56
+
57
+ select ta.担当CD, ta.出勤日
58
+
59
+ , DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and ta.売上日付 <= #" & 出勤日 & "#") as 売上日付
60
+
61
+ from テーブルA as ta
62
+
63
+ ) as 基準
64
+
65
+ inner join テーブルA as ta
66
+
67
+ on 基準.担当CD=ta.担当CD
68
+
69
+ and 基準.出勤日=ta.出勤日
70
+
71
+ ) left join テーブルB as tb
72
+
73
+ on 基準.担当CD=tb.担当CD
74
+
75
+ and 基準.売上日付=tb.売上日付
76
+
77
+ where 基準.担当CD='01'
78
+
79
+ order by ta.担当CD, ta.出勤日 desc
80
+
81
+ ```

3

修正

2021/08/03 05:28

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -20,19 +20,19 @@
20
20
 
21
21
  , DMin("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 >= #" & 出勤日 & "#") as 以降直近売上日
22
22
 
23
- from テーブルA ta
23
+ from テーブルA as ta
24
24
 
25
25
  ) as t
26
26
 
27
27
  ) as 基準
28
28
 
29
- inner join テーブルA ta
29
+ inner join テーブルA as ta
30
30
 
31
31
  on 基準.担当CD=ta.担当CD
32
32
 
33
33
  and 基準.出勤日=ta.出勤日
34
34
 
35
- ) left join テーブルB tb
35
+ ) left join テーブルB as tb
36
36
 
37
37
  on 基準.担当CD=tb.担当CD
38
38
 

2

修正

2021/08/03 05:18

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  from テーブルA ta
24
24
 
25
- ) t
25
+ ) as t
26
26
 
27
27
  ) as 基準
28
28
 

1

修正

2021/08/03 03:46

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  from テーブルA ta
24
24
 
25
+ ) t
26
+
25
27
  ) as 基準
26
28
 
27
29
  inner join テーブルA ta