Można użyć CTE
create table table1
(
COL int,
COL1 int,
COL2 int,
COL3 int
)
insert into table1
(COL,COL1,COL2,COL3)
values
(1, 2, 3, 6),
(4, 5, 6, 15),
(7, 8, 9, 24)
select
rank() OVER (ORDER BY COL3) as [Rank],
t1.COL,
t1.COL1,
t1.COL2,
t1.COL3
into #temp1
from table1 t1
;WITH x AS
(
SELECT
[Rank],
COL,
COL1,
COL2,
COL3,
Total=COL3
FROM #temp1
WHERE [Rank] = 1
UNION ALL
SELECT
y.[Rank],
y.COL,
y.COL1,
y.COL2,
y.COL3,
x.Total+(y.COL3)
FROM x INNER JOIN #temp1 AS y
ON y.[Rank] = x.[Rank] + 1
)
SELECT
COL,
COL1,
COL2,
COL3,
Total
FROM x
OPTION (MAXRECURSION 100);
SQL FIDDLE
Aby uruchomiony całkowity sensu, trzeba w jakiś sposób, aby określić, w jakim zamówienie * * wartości powinny być dodane. Czy jest jedna z kolumn, która pokazała kolumnę, która powinna być użyta do ustalenia kolejności wierszy? Jeśli nie, potrzebujesz więcej kolumn. –