質問するログイン新規登録

質問編集履歴

4

エラー文追加

2019/06/20 03:25

投稿

miya71ma
miya71ma

スコア49

title CHANGED
File without changes
body CHANGED
@@ -199,9 +199,13 @@
199
199
  CALL white();
200
200
  delimiter;
201
201
  ```
202
- 構文的に間違えているというエラーです。
203
- そもそもこの考え方(やろうとしていることはあっているのでしょうか...
204
202
 
203
+ ##エラー
204
+ `1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '@is_white double
205
+ DECLARE @counter INT
206
+ SET @counter =0
207
+
208
+ WHILE(@coun' 付近 3 行目`
205
209
  ##やりたいこと
206
210
  tableA
207
211
  |SC|today_close|ago_close|date|

3

SQLを変更しました

2019/06/20 03:25

投稿

miya71ma
miya71ma

スコア49

title CHANGED
File without changes
body CHANGED
@@ -186,18 +186,18 @@
186
186
  delimiter //
187
187
  CREATE PROCEDURE white()
188
188
  BEGIN
189
- DECLARE count int
189
+ DECLARE @count INT
190
- SET count = 1000
190
+ SET @count = 1000
191
191
 
192
- WHILE (count < 9999)
192
+ WHILE (@count < 9999)
193
- SELECT is_white := today_close-ago_close WHERE SC = @count ORDER BY date DESC LIMIT 4
193
+ SELECT today_close-ago_close into @is_white WHERE SC = @count ORDER BY date DESC LIMIT 4
194
194
  CASE
195
- WHEN is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true
195
+ WHEN @is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (@count,true) ON DUPLICATE KEY UPDATE @is_white = true
196
- WHEN is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false
196
+ WHEN @is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (@count,false) ON DUPLICATE KEY UPDATE @is_white = false
197
197
  END
198
198
  END
199
199
  CALL white();
200
- delimiter ;
200
+ delimiter;
201
201
  ```
202
202
  構文的に間違えているというエラーです。
203
203
  そもそもこの考え方(やろうとしていることはあっているのでしょうか...

2

やりたいことを可視化しました

2019/06/20 03:02

投稿

miya71ma
miya71ma

スコア49

title CHANGED
File without changes
body CHANGED
@@ -190,7 +190,7 @@
190
190
  SET count = 1000
191
191
 
192
192
  WHILE (count < 9999)
193
- SELECT is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5
193
+ SELECT is_white := today_close-ago_close WHERE SC = @count ORDER BY date DESC LIMIT 4
194
194
  CASE
195
195
  WHEN is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true
196
196
  WHEN is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false
@@ -200,4 +200,36 @@
200
200
  delimiter ;
201
201
  ```
202
202
  構文的に間違えているというエラーです。
203
- そもそもこの考え方(やろうとしていることはあっているのでしょうか...
203
+ そもそもこの考え方(やろうとしていることはあっているのでしょうか...
204
+
205
+ ##やりたいこと
206
+ tableA
207
+ |SC|today_close|ago_close|date|
208
+ |:--|:--|:--|:--|
209
+ |1000|100|94|2019/06/20/15:00|
210
+ |2000|150|179|2019/06/20/15:00|
211
+ |3000|347|344|2019/06/20/15:00|
212
+ |1000|93|88|2019/06/19/15:00|
213
+ |2000|179|175|2019/06/19/15:00|
214
+ |3000|347|341|2019/06/19/15:00|
215
+ |1000|86|74|2019/06/18/15:00|
216
+ |2000|173|160|2019/06/18/15:00|
217
+ |3000|344|321|2019/06/18/15:00|
218
+ |1000|77|71|2019/06/17/15:00|
219
+ |2000|160|164|2019/06/17/15:00|
220
+ |3000|340|300|2019/06/17/15:00|
221
+
222
+ のようにデータがtableAに格納されていて
223
+ SC=1000はtoday_close-ago_close>0が17~20日において全てtrue
224
+ SC=2000はtoday_close-ago_close>0が17~20日において一部false
225
+ SC=3000はtoday_close-ago_close>0が17~20日において全てtrue
226
+
227
+ なので
228
+ tableB
229
+ |SC|is_white|date|
230
+ |:--|:--|:--|
231
+ |1000|true|2019/06/20/15:00|
232
+ |2000|false|2019/06/20/15:00|
233
+ |3000|true|2019/06/20/15:00|
234
+
235
+ としたいです

1

検索文の編集

2019/06/20 02:15

投稿

miya71ma
miya71ma

スコア49

title CHANGED
File without changes
body CHANGED
@@ -184,20 +184,20 @@
184
184
  ##やったこと
185
185
  ```mySQL
186
186
  delimiter //
187
- START TRANSACTION;
187
+ CREATE PROCEDURE white()
188
+ BEGIN
188
- DECLARE @count int;
189
+ DECLARE count int
189
- SET @count = 1000;
190
+ SET count = 1000
190
191
 
191
- WHILE (@count < 9999)
192
+ WHILE (count < 9999)
192
- BEGIN
193
- SELECT @is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5;
193
+ SELECT is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5
194
- CASE
194
+ CASE
195
- WHEN @is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true;
195
+ WHEN is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true
196
- WHEN @is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false;
196
+ WHEN is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false
197
- END;
197
+ END
198
- END;
198
+ END
199
-
199
+ CALL white();
200
- END;
200
+ delimiter ;
201
201
  ```
202
202
  構文的に間違えているというエラーです。
203
203
  そもそもこの考え方(やろうとしていることはあっているのでしょうか...