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 に答える