SP spustíte pomocí ;WITH RatingLines ...
který se připojuje k prvnímu UPDATE
prohlášení, ne ty ostatní. Tento konstrukt vytváří CTE, který je viditelný pouze pro první příkaz, který za ním následuje. Další vysvětlení lze nalézt v TN pro WITH common_table_expression (Transact-SQL) . Tento výňatek z poznámek zdůrazňuje zejména toto:
Chcete-li, aby tato tabulka byla známá pro všechny příkazy ve vašem SP, vytvořte proměnnou tabulky nebo dočasnou tabulku pro RatingLines
namísto.
Obrys pomocí dočasné tabulky by vypadal takto:
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;