首页 > 解决方案 > 对重复的列值而不是其他列运行总计

问题描述

我想做总计,但在 over 子句中没有唯一列或 id 列。

CREATE TABLE piv2([name] varchar(5), [no] int);

INSERT INTO piv2
    ([name], [no])
VALUES
    ('a', 1),
    ('a', 2),
    ('a', 3),
    ('a', 4),
    ('b', 1),
    ('b', 2),
    ('b', 3);

只有 2 列,名称具有重复值,而我想要在 SQL Server 2017 中运行总计的编号。

预期结果:

a 1
a 3
a 6
a 10
b 11
b 13
b 16

有什么帮助吗?

标签: sqlsql-serversqlitetsql

解决方案


以下查询将生成您期望的输出,至少对于您向我们展示的确切样本数据而言:

SELECT
    name,
    SUM(no) OVER (ORDER BY name, no) AS no_sum
FROM piv2;

如果您打算用于滚动总和的顺序不是nameandno列给出的顺序,那么您应该显示该逻辑以及示例数据。


推荐阅读