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];
}
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
Haben Sie eine ID oder einen Zeitstempel oder etwas, das die Reihenfolge der Zeilen angibt? – APH