在SQL查询中实现循环逻辑

在SQL查询中实现循环逻辑,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我试图在sql查询中实现一些逻辑,以创建一个类似于以下内容的表: CountNum Identifier 20 a 40 a 60 a 20 b 40 b 20 c 20 d 40 d 20 e 40 e 60 e 80 e 正如您所看到的,只要Identifer保持不变,CountNum就会将20添加

我试图在sql查询中实现一些逻辑,以创建一个类似于以下内容的表:

CountNum  Identifier
20         a
40         a
60         a
20         b
40         b
20         c
20         d
40         d
20         e
40         e
60         e
80         e
正如您所看到的,只要Identifer保持不变,CountNum就会将20添加到下一条记录中。如果标识符发生变化,它将再次从20开始

到目前为止,我已经实现了以下伪代码:

Do the following for all records:
Update table set CountNum=20 for first Identifier
If Identifier is duplicated, add 20 to CountNum for each duplicate.
在SQL server中是否有实现此查询的方法

我还试图将结果移动到一个新表中。我试过:

INSERT INTO tblPayments select Identifier AS PaymentsIdentifier
ROW_NUMBER() OVER(PARTITION BY Identifier ORDER BY Identifier)*20 CountNum
FROM dbo.oldPayments
但是,它会生成错误:

Column name or number of supplied values does not match table definition.

完全不需要循环,您可以使用
行号()


这是新生成的表吗?是否从现有表中提取标识符?是的,从现有表中选择标识符以更新此新生成的表。非常好!完美地工作
SELECT Identifier,
       ROW_NUMBER() OVER(PARTITION BY Identifier ORDER BY Identifier)*20 CountNum
FROM dbo.YourTable;