[英]How SELECT table and Update from second row?
我正在学习并且在一项任务中面临一个无法解决的问题,我有 1 个称为会计,它有 5 行从 1 到 5 计算周数(这不是周数,而是另一个表中的 ID)。
会计编号 | 星期 | 收入总和 | 一般费用总额 | 个人开支总额 | 残留物 |
---|---|---|---|---|---|
1 | 1 | 100 | 10 | 10 | 80 |
2 | 2 | 100 | 10 | 10 | 160 |
3 | 3 | 0 | 0 | 0 | 0 |
4 | 4 | 0 | 0 | 0 | 0 |
5 | 5 | 0 | 0 | 0 | 0 |
我需要这样在第一周我可以进行一次计算并得到它。
UPDATE Accounting
SET Residue = IncomeSum - (GeneralExpensesSum + PersonalExpensesSum)
OUTPUT deleted.Residue AS DELres, inserted.Residue AS INres
WHERE Week IN (SELECT WeeksId FROM Weeks
WHERE [Selected Month] = 1 AND [Week number] = 1)
但是在第二周,我需要做几乎相同的计算,但是将上周的余额数据添加到当前收入中,然后出现错误。
UPDATE Accounting
SET Residue = (IncomeSum + (SELECT ISNULL(Residue, 0) AS Res
FROM Accounting
WHERE Week = Week - 1)) - (GeneralExpensesSum + PersonalExpensesSum)
WHERE Week IN (SELECT WeeksId FROM Weeks
WHERE [Selected Month] = 1 AND [Week number] > 1)
在Accounting
表中,null对所有列都是禁止的,但是当我请求上周的数据时(我请求星期几大于1的行),由于没有前一周的记录,它返回一个null 错误,我不知道如何查询整个表,但从第二行开始更新,第一行剩余部分的数据是什么。 这是一个示例表和查询。
错误:
无法将值 NULL 插入到列 'Residue'、表 'ExpDB.dbo.Accounting' 中; 列不允许空值。 更新失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.