2017-06-29 6 views
0

Sagen wir, wir haben eine Tabelle und ich möchte eine Spalte ähnlich der "Damage Taken" erstellen.Microsoft SQL Server: Subtrahieren von Spalte oben je nach Bedingung

Wenn der Name der Zeile über dieser Spalte ist, subtrahiere den Schaden der letzten Zeile mit dieser Zeile. Andernfalls subtrahiere Leben von dieser Reihe mit dem Schaden dieser Reihe.

Name Damage Life     Damage Taken 
Bill 97  100  -> (100 - 97) = 3 
Bill 93  100  -> (97 - 93) =  4 
Bill 71  100  -> (93 - 71) =  22 
Bill 54  100  -> (71 - 54) =  17 
Stacy 112  200  -> (200 - 112) = 88 
Stacy 109  200  -> (112 - 109) = 3 
Stacy 91  200  -> (109 - 91) = 18 
Stacy 81  200  -> (91 - 81) =  10 
Stacy 62  200  -> (81 - 62) =  19 

Ich bin relativ neu in SQL und denke in der C++ mit der zugrunde liegenden Logik der Säule wie so.

for(int i = 0; i<Name.size(); i++) 
    if(Name[i] == Name[i-1]){ 
     damageTaken[i] = Damage[i-1] - Damage[i]; 
    } 
    else{ 
     damageTaken[i] = Life[i] - Damage[i]; 
    } 
+0

Werfen Sie einen Blick auf Antwort Gordon hier https://stackoverflow.com/questions/17971988/sql-server-cumulative-sum-by-group. Ich würde diese Frage als dupliziert kennzeichnen, aber mir fehlen die Flags: p – hardkoded

+0

Haben Sie eine ID oder einen Zeitstempel oder etwas, das die Reihenfolge der Zeilen angibt? – APH

Antwort

Verwandte Themen