50 lines
1.5 KiB
Transact-SQL
50 lines
1.5 KiB
Transact-SQL
SET NOCOUNT ON;
|
|
|
|
DECLARE @ID uniqueidentifier, @BUDirectCosts decimal(15,4),
|
|
@Cost decimal(15, 4), @Year int, @Month int;
|
|
|
|
DECLARE scenario_cursor CURSOR FOR
|
|
SELECT ID, BUDirectCosts
|
|
FROM Scenario s WHERE not s.CostSavings is null;
|
|
|
|
OPEN scenario_cursor
|
|
|
|
FETCH NEXT FROM scenario_cursor INTO @ID, @BUDirectCosts
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
|
|
DECLARE cost_saving_cursor CURSOR FOR
|
|
SELECT [Year], cost, [Month]
|
|
FROM CostSaving
|
|
WHERE ScenarioId = @ID and not cost is null order by [Year], [Month]
|
|
|
|
declare @CostSavingsSum decimal(15,4)
|
|
set @CostSavingsSum = 0
|
|
update Scenario set ROIDate =null where id = @ID
|
|
|
|
OPEN cost_saving_cursor
|
|
FETCH NEXT FROM cost_saving_cursor INTO @Year, @Cost, @Month
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
set @CostSavingsSum = @CostSavingsSum + @Cost
|
|
|
|
if (@CostSavingsSum >= @BUDirectCosts)
|
|
BEGIN
|
|
print cast(@CostSavingsSum as nvarchar(20)) +'|'+ cast(@BUDirectCosts as nvarchar(20))
|
|
print cast(CAST(CONVERT(VARCHAR, @Year) + '-' + CONVERT(VARCHAR, @Month) + '-1' AS DATETIME) as varchar(10))
|
|
update Scenario set ROIDate = CAST(CONVERT(VARCHAR, @Year) + '-' + CONVERT(VARCHAR, @Month) + '-1' AS DATETIME)
|
|
where id = @ID
|
|
BREAK
|
|
END
|
|
FETCH NEXT FROM cost_saving_cursor INTO @Year, @Cost, @Month
|
|
END
|
|
|
|
CLOSE cost_saving_cursor
|
|
DEALLOCATE cost_saving_cursor
|
|
|
|
FETCH NEXT FROM scenario_cursor INTO @ID, @BUDirectCosts
|
|
END
|
|
CLOSE scenario_cursor;
|
|
DEALLOCATE scenario_cursor; |