Задать вопрос
Alexeytur
@Alexeytur

Возможно ли в UPDATE «видеть» результат обновления предыдущих строк?

Добрый день.

Имеется такая функция:

FUNCTION GetPD 
(
    @ReportDate datetime,
    @ItemId int
)
RETURNS int
AS
-- сложная логика пропущена, интересует этот запрос

    SELECT  TOP 1 
	   @Rating = rih.Rating
            FROM PDIndicatorsHistory AS rih 
            WHERE
		rih.ItemId= @itemId
                AND rih.ReportDate < @ReportDate
            ORDER BY rih.ReportDate DESC

    RETURN @Rating
END


Снаружи она вызывается так:

; WITH
	Data AS (
		SELECT TOP 100 PERCENT
			*
			FROM PDIndicatorsHistory 
			ORDER BY ReportDate ASC
	)
	UPDATE Data
		SET
			PDRating = @PDRating,
			@PDRating = GetPD (ReportDate, ItemId)
		WHERE
			ItemId= @ItemId
			AND ReportDate >= @DateFrom


GetPD предполагает, что при расчете на дату, в PDIndicatorsHistory есть расчет на предыдущую дату. Но обычный UPDATE при обновлении нескольких строк не дает определенного порядка выполнения. Пробовался вариант с CTE и TOP 100 PERCENT, но он дал результата.

Можно ли вообще так сделать, чтобы результат обновления одной строки в UPDATE был виден при обновлении следующей?
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы