Microsoft SQL Server:根据条件从上面的列中减去

时间:2017-06-29 23:13:40

标签: sql-server

让我们说我们有一张桌子,我想创建一个类似于“受到伤害”的列。

如果上面一行的名称与此列相同,则使用此行减去最后一行损坏。否则,从该行中减去Life,减去此行的Damage。

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];
    }

1 个答案:

答案 0 :(得分:0)

给你一个暗示。尝试在SQL中查找LAG()函数。

LAG (Transact-SQL)

相关问题