• You will need a CTE to achieve the results

    DECLARE@table TABLE

    (

    IdINT,

    NameVARCHAR(10),

    Value1INT,

    value2INT,

    PreviousRowId INT

    )

    INSERT@table

    SELECT1, 'A', 10, 0, 0 UNION ALL

    SELECT2, 'B', 0, 5, 1 UNION ALL

    SELECT3, 'C', 0, 6, 2 UNION ALL

    SELECT4, 'D', 0, 7, 3 UNION ALL

    SELECT5, 'E', 0, 8, 4 UNION ALL

    SELECT6, 'F', 0, 5, 5

    ; WITH cte_table AS

    (

    SELECTt.Id, t.Name, t.Value1, t.value2, t.Value1 + t.value2 AS total, t.PreviousRowId

    FROM@table AS t

    WHEREt.PreviousRowId = 0

    UNION ALL

    SELECTt2.Id, t2.Name, ct.total, t2.value2, ct.total + t2.value2 AS total, t2.PreviousRowId

    FROM@table AS t2

    INNER JOIN cte_table AS ct ON t2.PreviousRowId = ct.Id

    )

    SELECT*

    FROMcte_table


    Kingston Dhasian

    How to post data/code on a forum to get the best help - Jeff Moden
    http://www.sqlservercentral.com/articles/Best+Practices/61537/