Хорошо, если я правильно понял, это обновление, которое вы хотите выполнить, верно?
UPDATE W SET ERRORS = 'Error'
FROM table5 W
INNER JOIN tb T ON W.ROW_ID = T.ROW_ID
WHERE AP IS NOT NULL;
Чтобы это работало, вам нужен tb, который является CTE ... поэтому добавьте его:
;WITH tb AS
(
SELECT DISTINCT
ROW_ID, AP
FROM
Split_Segments
WHERE
LEN(AP) <> 3<br>
)
UPDATE W SET ERRORS = 'Error'
FROM table5 W
INNER JOIN tb T ON W.ROW_ID = T.ROW_ID
WHERE AP IS NOT NULL;
Теперь tb также нужен Split_Segments, который также является CTE, поэтому его также необходимо включить ...
;WITH Split_Segments AS
(
SELECT
W.ROW_ID
FROM
table1 W
WHERE
W.ERRORS IS NULL AND W.UserName = @userId
),tb AS
(
SELECT DISTINCT
ROW_ID, AP
FROM
Split_Segments
WHERE
LEN(AP) <> 3<br>
)
UPDATE W SET ERRORS = 'Error'
FROM table5 W
INNER JOIN tb T ON W.ROW_ID = T.ROW_ID
WHERE AP IS NOT NULL;
Там ... теперь это должно работать ... в обновлении нет ничего, что требовало бы временную таблицу или что-либо еще, кроме CTE ....