在条件更新语句中使用SUM
我一直在努力寻找这个,但我不确定我是否使用了正确的术语。或者可能只是因为它不可能。但我要做的是更新表中的所有记录,这些记录构成一个小于设定值的总和值。
所以这是一个例子:
ID type amount received_date processed_date
1 debit 10 7/1/2010 NULL
2 debit 10 7/2/2010 NULL
3 debit 10 7/3/2010 NULL
现在我要做的是更新所有等于总和小于22的记录。所以当我做的时候,总和id 1和2等于20,小于22.但它也需要只记录对processed_date使用null。我也想让它工作,以便从最旧到最新更新。
基本上这是我如何用伪代码编写它:
UPDATE credits
SET date_processed = '8/1/2010'
WHERE SUM(amount) <= @total AND
credit_type = [debits]
但我知道这不起作用。所以我希望一些SQL大师可能有想法。
我确定我可以在光标内写这个,但我想知道是否有基于集合的方式来执行此操作。
编辑:我更新了下面的表格和简要说明,以更好地描绘我的情况。
没有找到相关结果
已邀请:
2 个回复
队辅坟阮阶
正如我在评论中提到的,依赖Id作为序列的标记是不安全的。可能存在间隙,并且有人可以使用IDENTITY_INSERT将“稍后”行插入这些间隙。相反,您应该使用datetime列。如果该列是
,则在上述查询中简单地用
代替
。
搂腹时
这是w3schools上发现的一个很棒的教程 http://www.w3schools.com/SQL/sql_having.asp