【问题标题】:sql server or c# code modify column then update all the columns that followsql server 或 c# 代码修改列然后更新后面的所有列
【发布时间】:2019-09-17 07:39:13
【问题描述】:

如何使用sql cte或c#代码完成修改中间行金额然后更新后面的所有余额,这是客户账单表,每次添加记录,需要显示最新余额,余额+=上一个行平衡,数据量大,如何实现高性能代码

  Id      Amount   Balance
  1         1         1
  2         2         3
  3         3         6
  4         4         10
  10000     10000     10010
  。。。。。。。。。。。。。。。

【问题讨论】:

  • 您不应该从以前的行计算值并存储,存在数据不一致的风险。我会创建一个视图,它始终是最新的。 (或者也许计算列也可以。)
  • 您使用的是什么版本的 SQL Server?
  • sql server 2012
  • 这是客户账单表,每次添加记录,需要显示最新余额。
  • 提示:SUM() OVER()

标签: c# sql .net sql-server .net-core


【解决方案1】:

根据@Sami 提示,您可以在查询中使用 SUM():

SQL Fiddle

MS SQL Server 2017 架构设置

CREATE TABLE CustomerBill
(
  Id INT,
  Amount  INT
);
INSERT INTO CustomerBill (Id, Amount)
VALUES (1,1), (2,2), (3,3), (4,4), (10000, 10000)

查询 1

SELECT *, SUM(Amount) OVER (ORDER BY Id) AS Balance
FROM CustomerBill

Results

|    Id | Amount | Balance |
|-------|--------|---------|
|     1 |      1 |       1 |
|     2 |      2 |       3 |
|     3 |      3 |       6 |
|     4 |      4 |      10 |
| 10000 |  10000 |   10010 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2022-02-11
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多