【发布时间】:2019-07-09 11:23:57
【问题描述】:
我有一个包含 5 列的表格 - [ID]、[Name]、[Comment]、[Status] 和 [Size]。 所有行的[Status]列都需要更新,但直到[Size]列的值的总和小于100。如果总和超过100,剩余的行将在下一次调用中更新。
我能够使用 SUM 函数获得列中值的总和,但在迭代时遇到问题。
请帮忙。
=================================
我会尽量提供更多细节
这是表格数据
ID Name Status size comment
1 File1 Pass 20 Transmitted
2 File2 Pass 30 Transmitted
3 File3 Pass 50 Transmitted
4 File4 Pass 10 Transmitted
我想运行更新查询:
Update [sample_table]
set status ='Completed'
where SUM(size)<100
所以,它应该更新 File1、File2 和 File3 的状态。剩余的 File4 将在下一次迭代中更新。
现在清楚还是需要更多细节?
【问题讨论】:
-
请分享您的表格架构、示例数据和预期结果
-
表看起来像这样:SELECT [Name] (varchar) ,[Comment](varchar) ,[Status](varchar) ,[bytesize](bigint) FROM [sample_table] Column bytesize is has value整数值。我需要在字节大小列的 SUM 小于 100 时对状态列运行更新。
-
仅供参考,今天是 SQL Server 2008 扩展支持的最后一天;你真的应该看看升级路径。 2008 也不支持
OVER子句中的ROWS BETWEEN子句,这意味着实现“运行”总数的唯一方法是使用三角连接或Quirky Update 方法。 -
@Larnu - 我明白了。根据我分享的详细信息,您能否提供一个样本?
-
不,因为您自己没有提供样品。请参阅@Sami 的评论。如果没有更多细节,我们无法给您答案。
标签: sql-server database sql-server-2008 stored-procedures