繁体   English   中英

SELECT 表如何从第二行更新?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM