質問編集履歴

4

GROUP BY句の漏れを修正しました。

2021/07/28 14:07

投稿

PauT
PauT

スコア1

test CHANGED
File without changes
test CHANGED
@@ -76,6 +76,8 @@
76
76
 
77
77
 
78
78
 
79
+ 以降省略
80
+
79
81
 
80
82
 
81
83
  つまり要件としては、
@@ -122,11 +124,13 @@
122
124
 
123
125
  select
124
126
 
125
- id,MAX(入力日)
127
+ ID,MAX(入力日)
126
128
 
127
129
  from
128
130
 
129
- 元データ) a2
131
+ 元データ
132
+
133
+ group by ID) a2
130
134
 
131
135
  on
132
136
 
@@ -144,7 +148,7 @@
144
148
 
145
149
  and
146
150
 
147
- a1.入力日 < カレンダー.日付
151
+ a1.入力日 <= カレンダー.日付
148
152
 
149
153
  ```
150
154
 

3

コードの記述漏れを修正しました。

2021/07/28 14:07

投稿

PauT
PauT

スコア1

test CHANGED
File without changes
test CHANGED
@@ -142,6 +142,10 @@
142
142
 
143
143
  カレンダー.曜日 = 金
144
144
 
145
+ and
146
+
147
+ a1.入力日 < カレンダー.日付
148
+
145
149
  ```
146
150
 
147
151
 

2

基準日について説明を加えました。

2021/07/28 13:47

投稿

PauT
PauT

スコア1

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
 
6
6
 
7
+ ◆作りたいデータ(要点抜粋)
8
+
7
9
  |ID|基準日|入力日|入力データ|
8
10
 
9
11
  |--:|--:|--:|:--:|
@@ -34,7 +36,7 @@
34
36
 
35
37
  上記を構成する元データは以下のような形である。
36
38
 
37
- ◆元データ
39
+ ◆元データ(要点抜粋)
38
40
 
39
41
  |ID|入力日|入力データ|
40
42
 
@@ -86,6 +88,18 @@
86
88
 
87
89
 
88
90
 
91
+ ※基準日について
92
+
93
+ ・毎週金曜日を基準日として考える。
94
+
95
+ ・基準日はカレンダーのデータベースから取得する。
96
+
97
+ ・毎週の入力日について、金曜日にチェックできるようにする。
98
+
99
+ ・基準日ごとに最新の入力日と入力データを取得する。
100
+
101
+
102
+
89
103
  ##うまくいかないポイント
90
104
 
91
105
  以下のようなSQLを記載したが、データが途中で途切れてしまう。

1

カレンダー情報が漏れていたので、追記しました。

2021/07/28 13:30

投稿

PauT
PauT

スコア1

test CHANGED
File without changes
test CHANGED
@@ -54,6 +54,28 @@
54
54
 
55
55
 
56
56
 
57
+ ◆カレンダー(追記しました)
58
+
59
+ |日付|曜日|
60
+
61
+ |--:|:--:|
62
+
63
+ |1/1|金|
64
+
65
+ |1/2|土|
66
+
67
+ |1/3|日|
68
+
69
+ |1/4|月|
70
+
71
+ |1/5|火|
72
+
73
+ |1/6|水|
74
+
75
+
76
+
77
+
78
+
57
79
  つまり要件としては、
58
80
 
59
81
  ・基準日以前で最も新しい入力日
@@ -72,11 +94,15 @@
72
94
 
73
95
  select
74
96
 
75
- ID,入力日,入力データ
97
+ ID,入力日,入力データ,カレンダー.日付 --「元データ」は省略します
76
98
 
77
99
  from
78
100
 
79
101
  元データ a1
102
+
103
+ cross join
104
+
105
+ カレンダー
80
106
 
81
107
  join(
82
108
 
@@ -95,6 +121,12 @@
95
121
  and
96
122
 
97
123
  a1.入力日=a2.入力日
124
+
125
+
126
+
127
+ where
128
+
129
+ カレンダー.曜日 = 金
98
130
 
99
131
  ```
100
132