Создание столбца накопительной суммы - PullRequest
0 голосов
/ 22 декабря 2011

Идентификатор таблицы примера: (num - ключ, поэтому дубликатов не будет)

num
1
5
6
8
2
3

Мне нужен запрос, чтобы сделать это: Желаемый вывод: (Должен быть отсортирован и иметь столбец накопленной суммы)

num cumulative
1    1
2    3
3    6
5    11
6    17
8    25

В Mysql У меня

Select num as n, 
       (select sum(num) from ID where num <= n)
from ID order by n;

Я взял этот пример по этой ссылке , но в MySqlServer

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Попробуйте это:

SELECT num,(SELECT SUM(num) FROM tab WHERE num<=t.num) AS CumulativeSum
FROM tab t
0 голосов
/ 22 декабря 2011

Поскольку num не является уникальным, вам может понадобиться использовать row_number, чтобы получить туда уникальный номер, а затем сделать сумму:

declare @t as table (num int)

insert into @t (num) values (1)
insert into @t (num) values (5)
insert into @t (num) values (6)
insert into @t (num) values (7)
insert into @t (num) values (2)
insert into @t (num) values (3)

;with rows as (
    select
        num,
        ROW_NUMBER() over (order by num) as Row
    from @t
)
select num, (select sum(num) from rows where row <= r.row)
from rows r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...