gpt4 book ai didi

sql - 根据前一行数据自动计算sql表中的列

转载 作者:行者123 更新时间:2023-12-04 23:43:48 24 4
gpt4 key购买 nike

我正在使用 sql server 作为在 asp.net c# 中开发我的应用程序的后端。现在我需要创建一个带有自动计算列(期末余额)的表,如下所示:

Date    in stock    out stock   closing balance
2/3/2013 0 0 0
3/3/2013 10 5 5
5/3/2013 10 52 -37
6/3/2013 52 7 8
7/3/2013 6 50 -36
8/3/2013 10 12 -38

此处每一天的期末余额取决于前一天的期末余额

例如,今日收盘余额=(前一日收盘余额+今日进货)-(今日出货)当我向表中添加日期为 4/3/2013 的新条目时,该表必须如下所示

Date    in stock    out stock   closing balance
2/3/2013 0 0 0
3/3/2013 10 5 5
4/3/2013 20 15 10
5/3/2013 10 52 -32
6/3/2013 52 7 13
7/3/2013 6 50 -31
8/3/2013 10 12 -33

我使用 Microsoft Excel(使用公式)制作了这个,但我需要为我的应用程序使用 sql server 表来实现它。任何帮助将不胜感激。

最佳答案

假设

1.你的表结构是这样的

Date | In Stock | Out Stock

2.您将在计算余额之前插入一个新列

3.Date是一个Primary Column(Unique + Not NULL)

采用上述假设:

如果你想在C#中使用,你已经做了一个SP

1.创建一个临时表并使用Rank()分配Row Number

select 
rank() OVER (ORDER BY [Date]) as [Rank],
t1.[Date],
t1.[in stock],
t1.[out stock]
--,t1.[in stock]-t1.[out stock] balance
into #temp1
from (your table name)
;

2.现在您将使用上面的临时表获取余额

WITH x AS
(
SELECT
[Rank],
[Date],
[in stock],
[out stock],
bal=([in stock]-[out stock])
FROM #temp1
WHERE [Rank] = 1
UNION ALL
SELECT
y.[Rank],
y.[Date],
y.[in stock],
y.[out stock],
x.bal+(y.[in stock]-y.[out stock])
FROM x INNER JOIN #temp1 AS y
ON y.[Rank] = x.[Rank] + 1
)
SELECT
[Date],
[in stock],
[out stock],
Balance = bal
FROM x
ORDER BY Date
OPTION (MAXRECURSION 10000);

这是 SQL Fiddle 哪里可以验证。

关于sql - 根据前一行数据自动计算sql表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com