计算项目在SQL快照中显示的次数

时间:2018-01-11 15:12:13

标签: sql sql-server-2008 sql-server-2012

正如标题所说,我需要计算每个快照中ProductId出现的次数,而我似乎并没有弄清楚如何。

基本上,我需要对Table1进行更新,以便填充Column Count,如下所示。 还要考虑到Table1有100,000个不同的ProductID

表1(原创)

SnapshotTimeId  ProductID   Count
20170131        15748       NULL
20170228        15748       NULL
20170331        15748       NULL
20170630        578455      NULL
20170731        578455      NULL
20170831        578455      NULL
20170930        578455      NULL

表1(更新后)

SnapshotTimeId  ProductID   Count
20170131        15748       1
20170228        15748       2
20170331        15748       3
20170630        578455      1
20170731        578455      2
20170831        578455      3
20170930        578455      4

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER

WITH cte AS (
    SELECT SnapshotTimeId, ProductID, Count,
        ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY SnapshotTimeId) NewCount
    FROM yourTable
)

UPDATE cte
SET Count = NewCount;

如果您不需要实际更新表格,那么只需从cte中进行SELECT *