Я использую курсор для извлечения значений из таблицы строка за строкой, выполняю некоторые вычисления и затем сохраняю полученные значения во временной таблице.Должна быть одна запись во временной таблице для каждой записи в исходной таблице (в данном случае 39 строк).По какой-то причине моя временная таблица заканчивается удвоенным количеством строк (78), причем первая 39 является той же самой записью, повторенной 39 раз, а последующие 39 строк вычисляются надлежащим образом.
Так, например, первые 39строки будут повторяться ниже 39 раз:
2006-02-28, 1, 12.13, 0.97, 0.038281, 1.0183812
И затем, начиная со строки 40, он правильно подбирает
2006-03-31, 1.0183812, 50.15, 0.85, 0.054849, 1.016651561
2006-04-30, 1.016651561, 52.34, 0.45, 0.06516981, 1.032151
2006-05-31, 1.032151, 54.10, 0.62, 0.56196189, 1.016651561
и так далее ...
Вотзапрос:
DECLARE @fiscalPeriod smalldatetime,
@openingUnits float,
@divPrice money,
@divFactor float,
@drip float,
@endingUnits float
DECLARE divCursor CURSOR FOR
SELECT [FiscalPeriod]
,[DivPrice]
,[DivFactor]
FROM [dbo].[DividendPricing]
ORDER BY FiscalPeriod
OPEN divCursor
FETCH NEXT FROM divCursor
INTO @fiscalPeriod, @divPrice, @divFactor
SET @openingUnits = 1
SET @drip = @openingUnits/@divPrice*@divFactor
SET @endingUnits = @openingUnits + @drip
SELECT FiscalPeriod = @fiscalPeriod, OpeningUnits = @openingUnits, DivPrice = @divPrice, DivFactor = @divFactor, DRIP = @drip, EndingUnits = @openingUnits + @drip
INTO #Temp
FROM DividendPricing
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM divCursor
INTO @fiscalPeriod, @divPrice, @divFactor
SET @openingUnits = @endingUnits
SET @drip = @openingUnits/@divPrice*@divFactor
SET @endingUnits = @openingUnits + @drip
INSERT INTO #Temp (FiscalPeriod, OpeningUnits, DivPrice, DivFactor, DRIP, EndingUnits)
VALUES (@fiscalPeriod, @openingUnits, @divPrice, @divFactor, @drip, @endingUnits)
END
CLOSE divCursor
DEALLOCATE divCursor
SELECT * FROM #Temp
DROP TABLE #Temp