【发布时间】:2012-07-24 17:38:52
【问题描述】:
我需要在 ms-sql 服务器中获取列的累积(运行)总数。 IE。如果有一个名为“Marks”的列,则对应每一行的累积总和将是当前行和之前行的总和。我们可以在不使用连接的情况下获得结果吗?因为我的查询很大。
我已经包含了一个示例表和数据:
CREATE TABLE "SCORE_CHART"
(
"STUDENT_NAME" NVARCHAR(20),
"MARKS" INT
)
INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD1', 95);
INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD2', 90);
INSERT INTO SCORE_CHART (STUDENT_NAME, MARKS) VALUES ('STUD3', 98);
SELECT STUDENT_NAME, MARKS FROM SCORE_CHART;
预期结果:
在 oracle 中很容易写成这样:
SELECT
STUDENT_NAME,
MARKS,
SUM(MARKS) OVER (ORDER BY STUDENT_NAME) CUM_SUM
FROM SCORE_CHART
ORDER BY STUDENT_NAME;
提前致谢。
【问题讨论】:
-
我看不到您的预期结果(imgur 在工作中被阻止) - 您可以发布一个基于文本的示例吗?
-
第一行累计总和应该是95,第二行是185,第三行是283。
标签: sql sql-server sql-server-2008 tsql sql-server-2005