gpt4 book ai didi

sql - 根据上述行SQL计算

转载 作者:行者123 更新时间:2023-12-05 01:11:38 25 4
gpt4 key购买 nike

我正在尝试计算前几个月的发票值(value),并将其与当前值(value)放在同一行。

我正在使用 SQL Server.Microsoft SQL Server 2008 R2 (SP2)

我已经使用 CTE 和各种奇怪的连接尝试过运气,但我的输出从来都不正确。有人能指出我正确的方向吗?

示例表:

invoice_month   value
--------------------------
201510 337265.386
201511 335466.456
201512 338646.500
201601 333440.380
201602 330731.208
201603 339299.752
201604 340878.168
201605 359585.382
201606 339616.430
201607 316457.486
201608 308009.976
201609 232196.268
201610 894839.180
201611 232196.268
201612 232196.268
201701 232196.268
201702 232196.268
201703 232196.268

预期输出为:

invoice_month   value,         prevValue
--------------------------------------------
201510 337265.386, NULL
201511 335466.456, 337265.386
201512 338646.500, 335466.456
201601 333440.380, 333440.380
201602 330731.208, 333440.380
201603 339299.752, 330731.208
201604 340878.168, 339299.752
201605 359585.382, 340878.168
201606 339616.430, 359585.382
201607 316457.486, 339616.430
201608 308009.976, 316457.486
201609 232196.268, 308009.976
201610 894839.180, 232196.268
201611 232196.268, 894839.180
201612 232196.268, 232196.268
201701 232196.268, 232196.268
201702 232196.268, 232196.268
201703 232196.268, 232196.268

最佳答案

在 SQL Server 2012+ 中,您将使用 lag():

select t.invoice_month, t.value,
lag(t.value) over (order by t.invoice_month) as prev_value
from t;

这是一个 ANSI 标准函数。在早期版本的 SQL Server 中,有替代方法。

关于sql - 根据上述行SQL计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041596/

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