Zaczynasz SP z ;WITH RatingLines ...
który łączy się z pierwszą UPDATE
oświadczenie, a nie inne. Ta konstrukcja tworzy CTE, który jest widoczny tylko dla pierwszej instrukcji następującej po niej. Więcej wyjaśnień można znaleźć w TN dla Z common_table_expression (Transact-SQL) . W szczególności ten fragment z Uwagi podkreśla to:
Aby ta tabela była znana dla wszystkich instrukcji w twoim SP, utwórz zmienną tabeli lub tabelę tymczasową dla RatingLines
zamiast.
Kontur za pomocą tabeli tymczasowej wyglądałby następująco:
Select RDA.[CTS] AS [CTS]
,RDA.[B_KEY] AS [B_KEY]
,RDA.[H_KEY] AS [H_KEY]
,RDA.[RT_ID] AS [RT_ID]
,RDA.[RT_AVGRATING] AS [RT_AVGRATING]
,RDDA.[RTD_COMMENT] AS [RTD_COMMENT]
INTO #RatingLines -- Create #RatingLines as temporary table
From [DynNavHRS].[HRSDB].[HTL_RATING_ALL_DA] RDA
Join [DynNavHRS].[HRSDB].[HTL_RATING_DETAIL_ALL_DA] RDDA
ON RDA.RT_ID =RDDA.RT_ID
AND RDDA.[RTD_COMMENT] <> ''
AND RDA.[B_KEY]='19214642';
-- Throughout the rest of the SP, use #RatingLines as your ratings table; eg:
...
INNER JOIN #RatingLines RL1
...
-- At the end of the SP, drop the temporary table
DROP TABLE #RatingLines;