2014-01-21 2 views
-4

Я не могу сделать следующее немного ХП компиляции, хотя запрос сам по себе работает отлично:Использование WITH..AS с UPDATE

UPDATE t 
     SET 
      requestType= sp.requestType 
     FROM #tempComp AS t, 
     (
      WITH CT AS 
      (
       ........   ) 
      SELECT x, y, z 
      FROM CT WHERE ab = 1 
     ) AS sp 
     WHERE t.Id = sp.Id 

Что правильный способ организовать это?

+0

Вы можете поставить общее табличное выражение "поверх" 'UPDATE' например 'WITH CT AS (...) UPDATE ...' –

ответ

2

Каков правильный способ организовать это?

Согласно the manual, CTE на первом месте.

[ WITH <common_table_expression> [...n] ] 
UPDATE ... 

В вашем случае:

WITH CT AS 
(
    ........ 
) 
UPDATE t 
SET requestType = sp.requestType 
FROM #tempComp AS t, 
    (SELECT x, y, z 
     FROM CT 
     WHERE ab = 1) AS sp 
WHERE t.Id = sp.Id