gpt4 book ai didi

sql - 如何引用上一行的计算值以查找下一个计算值

转载 作者:行者123 更新时间:2023-12-04 14:30:36 25 4
gpt4 key购买 nike

尝试根据表中的值计算新字段。计算第一个字段后,需要在后面的行中引用先前的值才能开始下一次计算。

尝试使用滞后/超前函数,因为我需要进行分区。

declare @test as table (
[Worked Hours] decimal(2,0),
[Sold Hours] decimal(3,0),
[Current Backlog] decimal(3,0),
[Product] nvarchar(10),
[Revenue Type] nvarchar(3),
[Month] date
)

INSERT INTO @TEST
([Worked Hours], [Sold Hours], [Current Backlog], [Product], [Revenue Type], [Month])

VALUES
('10','150','50', 'Product', 'Revenue', '01-01-2019'),
('25','200','50', 'Product', 'Revenue', '02-01-2019'),
('15','175','50', 'Product', 'Revenue', '03-01-2019'),
('40','250','50', 'Product', 'Revenue', '04-01-2019')


select

t.[Product],
t.[Revenue Type],
t.[Month],
t.[Worked Hours],
t.[Sold Hours],
t.[Current Backlog]

from @test as T

我的预期结果是一个使用此数学的新专栏。

T.[Current Backlog] - T.[Worked Hours] + T.[Sold Hours] = 'New Backlog'(第一行为 190)。

后续行将使用“New Backlog Value”(190) 替代前面等式中的 T.[Current Backlog]。

Overall Expected Results

Product Revenue 2019-01-01 10 150 50 190
Product Revenue 2019-02-01 25 200 50 365
Product Revenue 2019-03-01 15 175 50 525
Product Revenue 2019-04-01 40 250 50 735

最佳答案

我想你想要一个累计和:

select t.*,
[Current Backlog] + sum([Sold Hours] - [Worked Hours]) over (order by [Month])
from @test t;

Here是一个数据库<> fiddle 。

关于sql - 如何引用上一行的计算值以查找下一个计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58224551/

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