在单个查询中更新具有不同值的多个行

时间:2014-03-19 19:31:11

标签: c# sql sql-server

我在数据库(SQL Server 2005)中有一个总帐表,包含列(ID,Insertion_Date,Invoice_No,Debit,Credit和Balance)。

当用户添加一些条目时,他将被给予填写发票号码。和金额(借方)因此余额将自动添加为余额=余额 - 金额。无论如何,在为同一发票设置多行之后,用户决定编辑前一行的金额。编辑金额后,同一行和其他行的余额应自动更改。 (如:编辑的行将采用新的金额,如:Balance = Balance - newamount,其他行将采用新余额和sub。及其当前金额。)

示例:表格GL

ID   Date       Invoice_No    Debit    Credit    Balance
---------------------------------------------------------
1   19/3/2014    123456        0        400        400
2   19/3/2014    123456       100         0        300
3   20/3/2014    123456        50         0        250
4   21/3/2014    123456       100         0        150
5   22/3/2014    123456        50         0        100

编辑ID为2的行并在借记栏上进行更改(而不是100使其成为50)后,其他行将生效,因此结果应如下所示。

ID   Date       Invoice_No    Debit    Credit    Balance
---------------------------------------------------------
1   19/3/2014    123456        0        400        400
2   19/3/2014    123456        50         0        350
3   20/3/2014    123456        50         0        300
4   21/3/2014    123456       100         0        200
5   22/3/2014    123456        50         0        150

任何想法如何通过单个查询来管理它。我是SQL新手,需要帮助。请询问更多信息。如果需要的话。

1 个答案:

答案 0 :(得分:7)

我强烈建议您不要将“运行总计”作为事务表中的字段保留 - 在视图,存储过程或消费应用程序中计算它。否则,对一个记录的更改将级联到表中可能的每个其他记录。