Sql server SQL server行号()超过(分区问题)
我有一个名为SavingsMaster的表。下面是一个示例输出Sql server SQL server行号()超过(分区问题),sql-server,row-number,Sql Server,Row Number,我有一个名为SavingsMaster的表。下面是一个示例输出 +--------+------------------+-------+ | CustNo | AccountNo | Cycle | +--------+------------------+-------+ | 1 | 48SVAS1521144100 | | | 2 | 21SVSV1300854500 | | | 2 | 21SVAS1308476900
+--------+------------------+-------+
| CustNo | AccountNo | Cycle |
+--------+------------------+-------+
| 1 | 48SVAS1521144100 | |
| 2 | 21SVSV1300854500 | |
| 2 | 21SVAS1308476900 | |
| 1 | 48SVAS1411737700 | |
+--------+------------------+-------+
如您所见,两个客户都有唯一的帐号。我的要求是按CustNo、AccountNo更新循环列组
我可以使用下面的select查询,但无法在update子句中使用它
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
表格式似乎已中断。请确保您已中断(在行尾使用双空格“”)@Devinda:很高兴我能提供帮助。;)