SQL 服务器 ROW_NUMBER() OVER(PARTITION 问题

SQL server ROW_NUMBER() OVER(PARTITION issue

我有一个 table 名为 SavingsMaster。下面是示例输出。

+--------+------------------+-------+
| CustNo |    AccountNo     | Cycle |
+--------+------------------+-------+
|      1 | 48SVAS1521144100 |       |
|      2 | 21SVSV1300854500 |       |
|      2 | 21SVAS1308476900 |       |
|      1 | 48SVAS1411737700 |       |
+--------+------------------+-------+

如您所见,两位客户都有唯一的帐号。我的要求是通过 CustNo, AccountNo.

更新 Cycle 列组

我可以使用下面的 select 查询,但我无法在更新子句中使用它。

 SELECT CustNo, AccountNo,
        ROW_NUMBER() OVER(PARTITION BY CustNo  ORDER BY AccountNo)    as RowNumber 
 FROM SavingsMaster

寻求您的帮助以编写更新声明。

非常感谢...

如果您想要序列号,那么您可以使用可更新的 CTE 来实现:

WITH toupdate AS (
      SELECT CustNo, AccountNo,
             ROW_NUMBER() OVER (PARTITION BY CustNo ORDER BY AccountNo) as RowNumber 
      FROM SavingsMaster
     )
UPDATE toupdate
    SET cycle = RowNumber;

试试这个方法:

UPDATE SavingsMaster
SET Cycle=T1.RowNumber
FROM
     (SELECT CustNo, AccountNo, ROW_NUMBER() OVER(PARTITION BY CustNo  ORDER BY AccountNo) as 'RowNumber'  
      FROM SavingsMaster) as T1 JOIN
SavingsMaster S ON S.CustNo=T1.CustNo AND S.AccountNo=T1.AccountNo