我想弄清楚如何做一種「消費」查詢,其中INT值列(X)從另一個INT列(Y)中減去,直到它達到0,然後停止。 DesiredResult和DesiredResultExplanation這一列僅用於參考正在執行的數學。這發生在DESC日期順序(未來消耗回當前)從2欄消費值
我最初的方法是使用窗口功能,但問題是一旦值(Y)達到0,它需要停止執行運行總數。使用CTE也有類似的問題。
如果更改表格結構將有所幫助,可以這樣做。
版本:SQL Server 2014或更高版本
謝謝!
DECLARE @test TABLE
(
ID INT IDENTITY (1,1)
,PeriodDate DATE
,X INT
,Y INT
,DesiredResult INT
,DesiredResultExplanation VARCHAR(100)
)
INSERT INTO @test VALUES ('2017-05-01', 100,0, 100,'Nothing left to subtract. Value is unchanged')
INSERT INTO @test VALUES ('2017-05-08', 200,0, 200,'Nothing left to subtract. Value is unchanged')
INSERT INTO @test VALUES ('2017-05-15', 300,0, 100,'300 - 200 = 100 (Orig -1100 has been consumed)')
INSERT INTO @test VALUES ('2017-05-22', 400,0,-200,'400 - 600 = -200 ')
INSERT INTO @test VALUES ('2017-05-29', 500,-1100,-600, '500 - 1100 = -600')
SELECT *
FROM @test
ORDER BY PeriodDate DESC
不知道什麼是'沒有什麼可以減少',突然你減少。因爲在您的示例中,列'Y'不會更改 –
請按照DESC順序查看列PeriodDate。 1100在5/29被消耗並且向後移動。當它達到5/8和5/1時,1100被消耗。希望有道理 – Kirby1367
1100哪裏來? –