2017-11-23 1 views
0

der Hoffnung, jemand mir dieses eine helfen:schaffen Wert in einer anderen Spalte basiert auf bedingte Anweisung MYSQL gestrigen Preis

Ich habe diese Tabelle, die ich in MYSQL erstellen möchten. Ich habe nur DATE und Closing Columns. Ich muss eine dritte Spalte erstellen, aber nur kategorial, wo es YES ist, wenn der Schlusswert der Zeilen kleiner ist als die Zeile darüber. Daher sind diese 2 Spalten in der oberen Reihe leer, weil der zukünftige Preis nicht verfügbar ist.

Auch eine vierte Spalte, wenn möglich, in dem die Änderung oben Reihe von Reihe größer ist als 1%, dann eine 1 geben sonst eine 0.

DATE  Closing Change GOODorBAD 

11/21/2017 155.5 -  - 
11/20/2017 153.83 yes  1 
11/17/2017 153.95 no  0 
11/16/2017 154.54 no  0 
11/15/2017 152.59 yes  1 
11/14/2017 153.31 no  0 
11/13/2017 153.87 no  0 
11/10/2017 153.68 yes  0 
11/9/2017 153.69 no  0 
11/8/2017 154.5 no  0 

Jede Hilfe sehr geschätzt wird. Danke

Antwort

0

Sie können CASE Bedingungen innerhalb SELECT verwenden.

UPDATE TEST_TABLE T 
    SET T.CHANGE = (SELECT CASE WHEN T.CLOSING < T2.CLOSING 
           THEN 'YES' 
           WHEN T.CLOSING > T2.CLOSING 
           THEN 'NO' 
           ELSE 
           NULL 
         END 
        FROM TEST_TABLE T2 
         WHERE T2.DATE > T.DATE 
        ORDER BY T2.DATE LIMIT 1), 

     T.GOODORBAD = (SELECT CASE WHEN (T2.CLOSING - T.CLOSING) > (T.CLOSING/100) 
            THEN '1' 
           WHEN (T2.CLOSING - T.CLOSING) <= (T.CLOSING/100) 
            THEN '0' 
           ELSE 
            NULL 
          END 
         FROM TEST_TABLE T2 
         WHERE T2.DATE > T.DATE 
         ORDER BY T2.DATE LIMIT 1); 
Verwandte Themen