1

考虑下表。

ID          UserCount
----------- -----------
1           2
2           3
3           5

我如何添加另一列 ( SequenceUserCount)UserCount并按顺序添加。

预期结果:

ID          UserCount   SequenceUserCount
----------- ----------- ------------------
1           2           2
2           3           5
3           5           10
4

2 回答 2

1

你可以这样做:

;WITH CTE
AS
(
   SELECT *,
  ROW_NUMBER() OVER(ORDER BY usercount) rownum
  FROM @table1
) 
SELECT 
  c1.id, 
  c1.usercount,
  SequenceUserCount = (SELECT SUM(c2.usercount) 
                       FROM cte c2
                       WHERE c2.rownum <= c1.rownum)
FROM CTE c1;

SQL 小提琴演示

这会给你:

| ID | USERCOUNT | SequenceUserCount  |
--------------------------------------
|  1 |         2 |        2           |
|  2 |         3 |        5           |
|  3 |         5 |       10           |

或者:您可以使用JOIN相关子查询来代替,如下所示:

;WITH CTE
AS
(
   SELECT *,
  ROW_NUMBER() OVER(ORDER BY usercount) rownum
  FROM @table1
) 
SELECT 
  c1.id, 
  c1.usercount,
  SequenceUserCount = SUM(c2.usercount) 
FROM CTE c1
INNER JOIN CTE c2 ON c2.rownum <= c1.rownum
GROUP BY c1.id, c1.usercount;
于 2012-12-13T06:52:22.027 回答
0

尝试这个

 select id,
   usercount       
   sum(usercount) over(order by usercount rows unbounded preceding) 
   as  sequenceusercount
 from Table
于 2012-12-13T06:52:58.380 回答