[英]Update statement on a cte with subquery
我有一個CTE,基本上可以根據某些條件過濾數據,但事實是,過濾后我需要更新這些記錄以“更正”它們,但是我在UPDATE
語句中得到了4104
。
當我直接調用變量時,我沒有問題,但是在進行計算的地方卻出現了錯誤,因為我從第一個和第二個查詢中調用了變量。
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY timestmp ASC) order,
*
FROM TSTSOLAP T
(
--SECOND QUERY
SELECT 1 FROM TABLE1 T2
WHERE --CONDITIONS MET
t.user_id = t2.id_user AND
T.ID_TIP = T2.ID_TIP AND
T.ID <> t2.ID AND
(T2.BEG BETWEEN T.BEG AND T.END)
OR T2.BEG = T.END
)
)
UPDATE CTE SET STAT=0, END = (T2.END - 1) --HERE IS WHERE I GET THE: Msg 4104, Level 16, State 1, Line 1
WHERE ORDER> 1
GO
我怎么稱呼非鏈接變量?
*代碼縮短,因為長度
只做一個JOIN
怎么樣?
WITH toupdate AS (
SELECT . . . ,
? as order
FROM table1
)
UPDATE T
SET STAT = 0,
END = (T2.END - 1)
FROM T JOIN
table2 T2
ON . . . <conditions here>
WHERE T.ORDER > 1;
根據子查詢中的條件,您可能仍然需要EXISTS
子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.