回答編集履歴
7
追記
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
追記
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
修正
test
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
select ta.担当CD, ta.出勤日
|
58
58
|
|
59
|
-
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and
|
59
|
+
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 売上日付
|
60
60
|
|
61
61
|
from テーブルA as ta
|
62
62
|
|
4
追記
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
修正
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
修正
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
修正
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
|