回答編集履歴
7
追記
answer
CHANGED
@@ -39,6 +39,23 @@
|
|
39
39
|
where 基準.担当CD='01'
|
40
40
|
order by ta.担当CD, ta.出勤日 desc
|
41
41
|
```
|
42
|
+
サブクエリーを使用するとこんな感じ。
|
43
|
+
```SQL
|
44
|
+
select ta.*, tb.*
|
45
|
+
from ((
|
46
|
+
select ta.担当CD, ta.出勤日
|
47
|
+
, (select Max(売上日付) from テーブルB where 担当CD = ta.担当CD and 売上日付 <= ta.出勤日) as 売上日付
|
48
|
+
from テーブルA as ta
|
49
|
+
) as 基準
|
50
|
+
inner join テーブルA as ta
|
51
|
+
on 基準.担当CD=ta.担当CD
|
52
|
+
and 基準.出勤日=ta.出勤日
|
53
|
+
) left join テーブルB as tb
|
54
|
+
on 基準.担当CD=tb.担当CD
|
55
|
+
and 基準.売上日付=tb.売上日付
|
56
|
+
where 基準.担当CD='01'
|
57
|
+
order by ta.担当CD, ta.出勤日 desc
|
58
|
+
```
|
42
59
|
#追記2
|
43
60
|
出勤日と前の出勤日の間の売上日付の場合は以下
|
44
61
|
```SQL
|
6
追記
answer
CHANGED
@@ -38,4 +38,22 @@
|
|
38
38
|
and 基準.売上日付=tb.売上日付
|
39
39
|
where 基準.担当CD='01'
|
40
40
|
order by ta.担当CD, ta.出勤日 desc
|
41
|
+
```
|
42
|
+
#追記2
|
43
|
+
出勤日と前の出勤日の間の売上日付の場合は以下
|
44
|
+
```SQL
|
45
|
+
select ta.*, tb.*
|
46
|
+
from ((
|
47
|
+
select ta.担当CD, ta.出勤日
|
48
|
+
, DMax("出勤日", "テーブルA", "担当CD='" & 担当CD & "' and 出勤日 <= #" & 出勤日 & "#") as 前出勤日
|
49
|
+
from テーブルA as ta
|
50
|
+
) as 基準
|
51
|
+
inner join テーブルA as ta
|
52
|
+
on 基準.担当CD=ta.担当CD
|
53
|
+
and 基準.出勤日=ta.出勤日
|
54
|
+
) left join テーブルB as tb
|
55
|
+
on 基準.担当CD=tb.担当CD
|
56
|
+
and 基準.出勤日 >= tb.売上日付 and 基準.前出勤日 < tb.売上日付
|
57
|
+
where 基準.担当CD='01'
|
58
|
+
order by ta.担当CD, ta.出勤日 desc
|
41
59
|
```
|
5
修正
answer
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
select ta.*, tb.*
|
28
28
|
from ((
|
29
29
|
select ta.担当CD, ta.出勤日
|
30
|
-
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and
|
30
|
+
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 売上日付
|
31
31
|
from テーブルA as ta
|
32
32
|
) as 基準
|
33
33
|
inner join テーブルA as ta
|
4
追記
answer
CHANGED
@@ -20,4 +20,22 @@
|
|
20
20
|
and 基準.売上日付=tb.売上日付
|
21
21
|
where 基準.担当CD='01'
|
22
22
|
order by ta.担当CD, ta.出勤日 desc
|
23
|
+
```
|
24
|
+
# 追記
|
25
|
+
出勤日以降の売上日付は関係ないという事だと以下の様な感じ
|
26
|
+
```SQL
|
27
|
+
select ta.*, tb.*
|
28
|
+
from ((
|
29
|
+
select ta.担当CD, ta.出勤日
|
30
|
+
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and ta.売上日付 <= #" & 出勤日 & "#") as 売上日付
|
31
|
+
from テーブルA as ta
|
32
|
+
) as 基準
|
33
|
+
inner join テーブルA as ta
|
34
|
+
on 基準.担当CD=ta.担当CD
|
35
|
+
and 基準.出勤日=ta.出勤日
|
36
|
+
) left join テーブルB as tb
|
37
|
+
on 基準.担当CD=tb.担当CD
|
38
|
+
and 基準.売上日付=tb.売上日付
|
39
|
+
where 基準.担当CD='01'
|
40
|
+
order by ta.担当CD, ta.出勤日 desc
|
23
41
|
```
|
3
修正
answer
CHANGED
@@ -9,13 +9,13 @@
|
|
9
9
|
select ta.担当CD, ta.出勤日
|
10
10
|
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 以前直近売上日
|
11
11
|
, DMin("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 >= #" & 出勤日 & "#") as 以降直近売上日
|
12
|
-
from テーブルA ta
|
12
|
+
from テーブルA as ta
|
13
13
|
) as t
|
14
14
|
) as 基準
|
15
|
-
inner join テーブルA ta
|
15
|
+
inner join テーブルA as ta
|
16
16
|
on 基準.担当CD=ta.担当CD
|
17
17
|
and 基準.出勤日=ta.出勤日
|
18
|
-
) left join テーブルB tb
|
18
|
+
) left join テーブルB as tb
|
19
19
|
on 基準.担当CD=tb.担当CD
|
20
20
|
and 基準.売上日付=tb.売上日付
|
21
21
|
where 基準.担当CD='01'
|
2
修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 以前直近売上日
|
11
11
|
, DMin("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 >= #" & 出勤日 & "#") as 以降直近売上日
|
12
12
|
from テーブルA ta
|
13
|
-
) t
|
13
|
+
) as t
|
14
14
|
) as 基準
|
15
15
|
inner join テーブルA ta
|
16
16
|
on 基準.担当CD=ta.担当CD
|
1
修正
answer
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
, DMax("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 <= #" & 出勤日 & "#") as 以前直近売上日
|
11
11
|
, DMin("売上日付", "テーブルB", "担当CD='" & 担当CD & "' and 売上日付 >= #" & 出勤日 & "#") as 以降直近売上日
|
12
12
|
from テーブルA ta
|
13
|
+
) t
|
13
14
|
) as 基準
|
14
15
|
inner join テーブルA ta
|
15
16
|
on 基準.担当CD=ta.担当CD
|