Существующую сигнатуру GetPD менять возможности нет, она зависит от ItemId и ReportDate, а то что она иногда получает предыдущее значение из PDIndicatorsHistory - редкая ситуация.
В нашей системе оказалось жесткое ограничение по глубине рекурсии, поэтому рекурсивные методы не подойдут.
OPTION (MAXRECURSION 0)
. что конкретно не понятно в поставленной задаче ?
Решение прикладываю текстом, ссылку не оставляю т.к. исходный форум с решением блокирует РФ.
сервер поднят с чистого образа с устаревшими обновлениями.
Чтобы историческая цепочка стала устойчивой, нужно вводить указатель на следующую или предыдущую запись.
Вы внимательно читали то, что я пишу? перечитайте последнее предложение. Вы обращаетесь к состоянию таблицы TMP_PDIndicatorsHistory на момент запуска запроса, а не на текущий момент полуобработанной таблицы.