Попытка вычислить новое поле на основе значений в таблице. После того, как первое поле вычислено, необходимо, чтобы следующие строки ссылались на предыдущее значение, чтобы начать следующий расчет.
Попытка использовать функции запаздывания / опережения, так как мне потребуется разделить.
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. [Текущее отставание] - T. [Рабочие часы] + T. [Проданные часы] = 'Новое отставание' (Для первой строки это будет190).
В следующей строке будет использоваться «Новое значение невыполненного задания» (190) в качестве замены T. [Текущее отставание] в предыдущем уравнении.
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