基本上,有这个表:
12.10
2.35
21.45
35.26
我想在每条记录中计算所有先前记录的总和,如下所示:
12.10 | 12.10
2.35 | 14.45
21.45 | 35.90
35.26 | 71.16
答案 0 :(得分:3)
假设您有两列,一个名为id
的主键和一个名为value
的列,那么您可以使用此列:
SELECT T1.id, SUM(T2.value)
FROM table1 T1
JOIN table1 T2
ON T2.id <= T1.id
GROUP BY T1.id
如果您没有任何唯一标识符(为什么不?),那么您可以使用ROW_NUMBER创建一个。
答案 1 :(得分:2)
这称为跑步总数。
如果您有日期时间列,可以使用以下内容:
SELECT t1.id, t1.transactiondatetime, amount,
(
SELECT SUM(amount)
FROM dbo.table1 as t1
WHERE t1.transactiondatetime <= t0.transactiondatetime
) AS balance
FROM dbo.table1 AS t0
答案 2 :(得分:0)
一种选择是使用窗口功能
SELECT id, data_size,
SUM(data_size) OVER (ORDER BY ID) total_size
FROM files;
那么结果如下
ID DATA_SIZE TOTAL_SIZE
---------- ---------- ----------
104427 3977 3977
104428 118948 122925
104429 847 123772
104430 2145 125917
104431 2688 128605
104432 3798 132403
104433 3110 135513
104434 5534 141047
104435 3956 145003
9 rows selected.
如您所见,它汇总了所有先前的DATA_SIZE列值