質問編集履歴
4
GROUP BY句の漏れを修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -37,6 +37,7 @@
|
|
37
37
|
|1/5|火|
|
38
38
|
|1/6|水|
|
39
39
|
|
40
|
+
以降省略
|
40
41
|
|
41
42
|
つまり要件としては、
|
42
43
|
・基準日以前で最も新しい入力日
|
@@ -60,9 +61,10 @@
|
|
60
61
|
カレンダー
|
61
62
|
join(
|
62
63
|
select
|
63
|
-
|
64
|
+
ID,MAX(入力日)
|
64
65
|
from
|
65
|
-
元データ
|
66
|
+
元データ
|
67
|
+
group by ID) a2
|
66
68
|
on
|
67
69
|
a1.ID=a2.ID
|
68
70
|
and
|
@@ -71,7 +73,7 @@
|
|
71
73
|
where
|
72
74
|
カレンダー.曜日 = 金
|
73
75
|
and
|
74
|
-
a1.入力日 < カレンダー.日付
|
76
|
+
a1.入力日 <= カレンダー.日付
|
75
77
|
```
|
76
78
|
|
77
79
|
出力されるデータは以下のような形である。
|
3
コードの記述漏れを修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,6 +70,8 @@
|
|
70
70
|
|
71
71
|
where
|
72
72
|
カレンダー.曜日 = 金
|
73
|
+
and
|
74
|
+
a1.入力日 < カレンダー.日付
|
73
75
|
```
|
74
76
|
|
75
77
|
出力されるデータは以下のような形である。
|
2
基準日について説明を加えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
##やりたいこと
|
2
2
|
以下のようなデータをSQLで抽出すること。
|
3
3
|
|
4
|
+
◆作りたいデータ(要点抜粋)
|
4
5
|
|ID|基準日|入力日|入力データ|
|
5
6
|
|--:|--:|--:|:--:|
|
6
7
|
|101|1/1|12/30|A|
|
@@ -16,7 +17,7 @@
|
|
16
17
|
|
17
18
|
|
18
19
|
上記を構成する元データは以下のような形である。
|
19
|
-
◆元データ
|
20
|
+
◆元データ(要点抜粋)
|
20
21
|
|ID|入力日|入力データ|
|
21
22
|
|--:|--:|:--:|
|
22
23
|
|101|12/30|A|
|
@@ -42,6 +43,12 @@
|
|
42
43
|
・その際の入力データ
|
43
44
|
の2点を、基準日ごとに抽出することである。
|
44
45
|
|
46
|
+
※基準日について
|
47
|
+
・毎週金曜日を基準日として考える。
|
48
|
+
・基準日はカレンダーのデータベースから取得する。
|
49
|
+
・毎週の入力日について、金曜日にチェックできるようにする。
|
50
|
+
・基準日ごとに最新の入力日と入力データを取得する。
|
51
|
+
|
45
52
|
##うまくいかないポイント
|
46
53
|
以下のようなSQLを記載したが、データが途中で途切れてしまう。
|
47
54
|
```ここに言語を入力
|
1
カレンダー情報が漏れていたので、追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,6 +26,17 @@
|
|
26
26
|
|102|1/4|E|
|
27
27
|
|102|1/22|F|
|
28
28
|
|
29
|
+
◆カレンダー(追記しました)
|
30
|
+
|日付|曜日|
|
31
|
+
|--:|:--:|
|
32
|
+
|1/1|金|
|
33
|
+
|1/2|土|
|
34
|
+
|1/3|日|
|
35
|
+
|1/4|月|
|
36
|
+
|1/5|火|
|
37
|
+
|1/6|水|
|
38
|
+
|
39
|
+
|
29
40
|
つまり要件としては、
|
30
41
|
・基準日以前で最も新しい入力日
|
31
42
|
・その際の入力データ
|
@@ -35,9 +46,11 @@
|
|
35
46
|
以下のようなSQLを記載したが、データが途中で途切れてしまう。
|
36
47
|
```ここに言語を入力
|
37
48
|
select
|
38
|
-
ID,入力日,入力データ
|
49
|
+
ID,入力日,入力データ,カレンダー.日付 --「元データ」は省略します
|
39
50
|
from
|
40
51
|
元データ a1
|
52
|
+
cross join
|
53
|
+
カレンダー
|
41
54
|
join(
|
42
55
|
select
|
43
56
|
id,MAX(入力日)
|
@@ -47,6 +60,9 @@
|
|
47
60
|
a1.ID=a2.ID
|
48
61
|
and
|
49
62
|
a1.入力日=a2.入力日
|
63
|
+
|
64
|
+
where
|
65
|
+
カレンダー.曜日 = 金
|
50
66
|
```
|
51
67
|
|
52
68
|
出力されるデータは以下のような形である。
|