Bạn bắt đầu SP với ;WITH RatingLines ...
kết nối với UPDATE
đầu tiên tuyên bố, không phải những người khác. Cấu trúc này tạo ra một CTE chỉ hiển thị cho câu lệnh đầu tiên theo sau nó. Bạn có thể tìm thêm giải thích trong TN cho WITH common_table_expression (Transact-SQL) . Đặc biệt đoạn trích này từ Nhận xét làm nổi bật điều này:
Để làm cho bảng này được biết đến với tất cả các câu lệnh trong SP của bạn, hãy tạo một biến bảng hoặc một bảng tạm thời cho RatingLines
thay vì.
Phác thảo bằng cách sử dụng bảng tạm thời sẽ như sau:
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;