2

我想在导入步骤中为中间表上的重复条目创建一个整数计数器。假设我有一个名为 的表FinalTable,如下所示:

FinalTable

ID       Date          SameDateCounter
1003     2012/01/01    NULL
1004     2012/02/01    NULL
1005     2012/03/01    1
1006     2012/03/01    2
1007     2012/03/01    3
1008     2012/04/01    1
1009     2012/04/01    2

并且对 有唯一的约束(Date, SameDateCounter)。在中间步骤中,数据位于 中,除了没有任何约束外,它IntermediateTable看起来一模一样。FinalTable所以这个问题的出发点在这里:。

IntermediateTable

ID       Date          SameDateCounter
1003     2012/01/01    NULL
1004     2012/02/01    NULL
1005     2012/03/01    NULL
1006     2012/03/01    NULL
1007     2012/03/01    NULL
1008     2012/04/01    NULL
1009     2012/04/01    NULL

我需要生成 SameDateCounter 的值,从一个开始,其中日期出现多次。

4

1 回答 1

3

您可以将ROW_NUMBER()函数与PARTITION BY子句结合使用:

;WITH Data AS
(  
   SELECT
       ID, Date,
       SameDateCounter = ROW_NUMBER() OVER (PARTITION BY Date ORDER BY ID DESC)
   FROM dbo.YourTableNameHere
)
SELECT *
FROM Data

PARTITION BY Date子句将每个单独的值分组Date到它自己的“分区”中,并ROW_NUMBER()为每个分区分配从 1 开始的数字。

因此,您SameDayCounter将在每个新的一天从 1 开始,并将显示该特定日期的行。

于 2012-06-22T10:19:49.143 回答