假设我们有一个表,我想创建一个类似于"所受伤害"的列。
如果上面行的名称与此列相同,请减去此行的最后一行损坏。否则,从这一行中减去生命,再减去这一行的伤害。
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
我对 SQL 相对较新,并且像这样考虑C++列的底层逻辑。
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];
}
给你一个提示。 尝试在SQL中查找LAG()
函数。
LAG (Transact-SQL(