SELECT TH1.TransactionID, TH1.ActualCost, SUM(TH2.ActualCost) AS RunningTotalFROM Production.TransactionHistory TH1JOIN Production.TransactionHistory TH2 ON TH2.TransactionID <= TH1.TransactionIDGROUP BY TH1.TransactionID, TH1.ActualCostORDER BY TH1.TransactionID
SELECT TH1.TransactionID, TH1.ActualCost, ( SELECT SUM(TH2.ActualCost) FROM Production.TransactionHistory TH2 WHERE TH2.TransactionID <= TH1.TransactionID ) AS RunningTotalFROM Production.TransactionHistory TH1ORDER BY TH1.TransactionID
DECLARE RunningTotalCursorCURSOR LOCAL FAST_FORWARD FOR SELECT TransactionID, ActualCost FROM Production.TransactionHistory ORDER BY TransactionIDOPEN RunningTotalCursorDECLARE @TransactionID INTDECLARE @ActualCost MONEYDECLARE @RunningTotal MONEYSET @RunningTotal = 0DECLARE @Results TABLE( TransactionID INT NOT NULL PRIMARY KEY, ActualCost MONEY, RunningTotal MONEY)FETCH NEXT FROM RunningTotalCursorINTO @TransactionID, @ActualCostWHILE @@FETCH_STATUS = 0BEGIN SET @RunningTotal = @RunningTotal + @ActualCost INSERT @Results VALUES (@TransactionID, @ActualCost, @RunningTotal) FETCH NEXT FROM RunningTotalCursor INTO @TransactionID, @ActualCostENDCLOSE RunningTotalCursorDEALLOCATE RunningTotalCursorSELECT *FROM @ResultsORDER BY TransactionID