Du starter SP med ;WITH RatingLines ...
som forbinder til den første UPDATE
udsagn, ikke de andre. Denne konstruktion opretter en CTE, der kun er synlig for den første sætning, der følger efter den. Yderligere forklaring kan findes i TN for MED common_table_expression (Transact-SQL) . Især dette uddrag fra Bemærkninger fremhæver dette:
For at få denne tabel kendt for alle udsagn i din SP, skal du oprette en tabelvariabel eller en midlertidig tabel for RatingLines
i stedet.
Disposition ved hjælp af en midlertidig tabel ville være som følger:
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;