質問編集履歴

4

エラー文追加

2019/06/20 03:25

投稿

miya71ma
miya71ma

スコア49

test CHANGED
File without changes
test CHANGED
@@ -400,11 +400,19 @@
400
400
 
401
401
  ```
402
402
 
403
+
404
+
405
+ ##エラー
406
+
407
+ `1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '@is_white double
408
+
403
- 構文的に間違えているというエラーです。
409
+ DECLARE @counter INT
410
+
404
-
411
+ SET @counter =0
412
+
413
+
414
+
405
- そもそもこの考え方(やろうとしていることはあっているのでしょうか...
415
+ WHILE(@coun' 付近 3 行目`
406
-
407
-
408
416
 
409
417
  ##やりたいこと
410
418
 

3

SQLを変更しました

2019/06/20 03:25

投稿

miya71ma
miya71ma

スコア49

test CHANGED
File without changes
test CHANGED
@@ -374,21 +374,21 @@
374
374
 
375
375
  BEGIN
376
376
 
377
- DECLARE count int
377
+ DECLARE @count INT
378
-
378
+
379
- SET count = 1000
379
+ SET @count = 1000
380
-
381
-
382
-
380
+
381
+
382
+
383
- WHILE (count < 9999)
383
+ WHILE (@count < 9999)
384
-
384
+
385
- SELECT is_white := today_close-ago_close WHERE SC = @count ORDER BY date DESC LIMIT 4
385
+ SELECT today_close-ago_close into @is_white WHERE SC = @count ORDER BY date DESC LIMIT 4
386
386
 
387
387
  CASE
388
388
 
389
- WHEN is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true
389
+ WHEN @is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (@count,true) ON DUPLICATE KEY UPDATE @is_white = true
390
-
390
+
391
- WHEN is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false
391
+ WHEN @is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (@count,false) ON DUPLICATE KEY UPDATE @is_white = false
392
392
 
393
393
  END
394
394
 
@@ -396,7 +396,7 @@
396
396
 
397
397
  CALL white();
398
398
 
399
- delimiter ;
399
+ delimiter;
400
400
 
401
401
  ```
402
402
 

2

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

2019/06/20 03:02

投稿

miya71ma
miya71ma

スコア49

test CHANGED
File without changes
test CHANGED
@@ -382,7 +382,7 @@
382
382
 
383
383
  WHILE (count < 9999)
384
384
 
385
- SELECT is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5
385
+ SELECT is_white := today_close-ago_close WHERE SC = @count ORDER BY date DESC LIMIT 4
386
386
 
387
387
  CASE
388
388
 
@@ -403,3 +403,67 @@
403
403
  構文的に間違えているというエラーです。
404
404
 
405
405
  そもそもこの考え方(やろうとしていることはあっているのでしょうか...
406
+
407
+
408
+
409
+ ##やりたいこと
410
+
411
+ tableA
412
+
413
+ |SC|today_close|ago_close|date|
414
+
415
+ |:--|:--|:--|:--|
416
+
417
+ |1000|100|94|2019/06/20/15:00|
418
+
419
+ |2000|150|179|2019/06/20/15:00|
420
+
421
+ |3000|347|344|2019/06/20/15:00|
422
+
423
+ |1000|93|88|2019/06/19/15:00|
424
+
425
+ |2000|179|175|2019/06/19/15:00|
426
+
427
+ |3000|347|341|2019/06/19/15:00|
428
+
429
+ |1000|86|74|2019/06/18/15:00|
430
+
431
+ |2000|173|160|2019/06/18/15:00|
432
+
433
+ |3000|344|321|2019/06/18/15:00|
434
+
435
+ |1000|77|71|2019/06/17/15:00|
436
+
437
+ |2000|160|164|2019/06/17/15:00|
438
+
439
+ |3000|340|300|2019/06/17/15:00|
440
+
441
+
442
+
443
+ のようにデータがtableAに格納されていて
444
+
445
+ SC=1000はtoday_close-ago_close>0が17~20日において全てtrue
446
+
447
+ SC=2000はtoday_close-ago_close>0が17~20日において一部false
448
+
449
+ SC=3000はtoday_close-ago_close>0が17~20日において全てtrue
450
+
451
+
452
+
453
+ なので
454
+
455
+ tableB
456
+
457
+ |SC|is_white|date|
458
+
459
+ |:--|:--|:--|
460
+
461
+ |1000|true|2019/06/20/15:00|
462
+
463
+ |2000|false|2019/06/20/15:00|
464
+
465
+ |3000|true|2019/06/20/15:00|
466
+
467
+
468
+
469
+ としたいです

1

検索文の編集

2019/06/20 02:15

投稿

miya71ma
miya71ma

スコア49

test CHANGED
File without changes
test CHANGED
@@ -370,33 +370,33 @@
370
370
 
371
371
  delimiter //
372
372
 
373
- START TRANSACTION;
374
-
375
- DECLARE @count int;
376
-
377
- SET @count = 1000;
378
-
379
-
380
-
381
- WHILE (@count < 9999)
373
+ CREATE PROCEDURE white()
382
-
374
+
383
- BEGIN
375
+ BEGIN
376
+
384
-
377
+ DECLARE count int
378
+
379
+ SET count = 1000
380
+
381
+
382
+
383
+ WHILE (count < 9999)
384
+
385
- SELECT @is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5;
385
+ SELECT is_white := today_close-today_open WHERE SC = @count ORDER BY date DESC LIMIT 5
386
-
386
+
387
- CASE
387
+ CASE
388
-
388
+
389
- WHEN @is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true;
389
+ WHEN is_white>0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,true) ON DUPLICATE KEY UPDATE is_white = true
390
-
390
+
391
- WHEN @is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false;
391
+ WHEN is_white<=0 THEN INSERT INTO tableB (SC,is_white) VALUES (SC,false) ON DUPLICATE KEY UPDATE is_white = false
392
-
392
+
393
- END;
393
+ END
394
-
394
+
395
- END;
395
+ END
396
+
396
-
397
+ CALL white();
397
-
398
-
398
+
399
- END;
399
+ delimiter ;
400
400
 
401
401
  ```
402
402