我需要在SQLserver中循环更新一组数据,更新数据的结果以下面这段SQL为结果:SELECT OrderNo, [QuantityPerHour]/(LEN([BatchID]) - LEN(REPLACE([BatchID], '_', '')) + 1) AS NewQuantityPerHour FROM [MDStandard].[UserData].[Orders] where [BatchID] <>''
时间: 2023-10-11 15:13:11 浏览: 63
要在SQL Server中循环更新一组数据,将计算结果更新到表中,你可以使用以下步骤:
1. 创建一个游标,用于循环遍历数据。以下是一个示例:
```sql
DECLARE @OrderNo VARCHAR(50)
DECLARE @NewQuantityPerHour DECIMAL(10, 2)
DECLARE cursorName CURSOR FOR
SELECT OrderNo, [QuantityPerHour]/(LEN([BatchID]) - LEN(REPLACE([BatchID], '_', '')) + 1) AS NewQuantityPerHour
FROM [MDStandard].[UserData].[Orders]
WHERE [BatchID] <> ''
OPEN cursorName
FETCH NEXT FROM cursorName INTO @OrderNo, @NewQuantityPerHour
WHILE @@FETCH_STATUS = 0
BEGIN
-- 在这里执行更新操作,将计算结果更新到表中
UPDATE [MDStandard].[UserData].[Orders]
SET [NewQuantityPerHour] = @NewQuantityPerHour
WHERE OrderNo = @OrderNo
FETCH NEXT FROM cursorName INTO @OrderNo, @NewQuantityPerHour
END
CLOSE cursorName
DEALLOCATE cursorName
```
在上述示例中,我们使用了一个游标 `cursorName` 来遍历满足条件的数据行。在每次循环中,我们将计算结果 `@NewQuantityPerHour` 通过更新操作更新到表中的 `NewQuantityPerHour` 列。
请将 `[MDStandard].[UserData].[Orders]` 替换为你要更新的表名。
2. 执行上述代码,循环更新数据。
请注意,使用游标进行循环更新操作可能会对性能产生一定的影响。如果数据较大,你可以考虑使用其他更有效的方法来实现更新操作。