2010-06-23 42 views
0

我正在錯誤AS錯誤,如下圖所示:隨着SQL

Msg 156, Level 15, State 1, Procedure Sp_Table1, Line 22 
Incorrect syntax near the keyword 'AS'. 

在執行這個SQL:

WITH myCTE AS 
(Select mci.* from 
view_name AS si 
JOIN merch_catalog_ipt_view_name AS mci 
    ON mci.view_id = si.view_id 
    AND mci.resolved_view_name_id = si.view_name_id 
    AND mci.ctg_ipt_event_id = @ctg_ipt_event_id 
    AND mci.accept_flag = 'y') 

UPDATE view_name 
SET name = (select mci.name from myCTE where myCTE.view_id = view_id) 
,view_name_ctg_id = (select mci.resolved_view_name_ctg_id from myCTE where myCTE.view_id = view_id) 
,xref_value = (select mci.xref_value from myCTE where myCTE.view_id = view_id) 
,availability_start_date = (select mci.availability_start_date from myCTE where myCTE.view_id = view_id) 
,availability_end_date = (select mci.availability_end_date from myCTE where myCTE.view_id = view_id) 
,status_code = (select mci.status_code from myCTE where myCTE.view_id = view_id) 
,last_modified_user_id = (select CASE WHEN mci.last_modified_user_id = 42 THEN @posting_user_id ELSE mci.last_modified_user_id END from myCTE where myCTE.view_id = view_id) 
,last_modified_timestamp = CURRENT_TIMESTAMP 
WHERE si.shi_flag = 'n' 
and exists (select view_id from merch_catalog_ipt_view_name AS mci 
    Where mci.view_id = view_name.view_id 
    AND mci.resolved_view_name_id = view_name.view_name_id 
    AND mci.ctg_ipt_event_id = @ctg_ipt_event_id 
    AND mci.accept_flag = 'y') 

請幫

回答

4

嘗試把一個分號;之前你作爲

在作爲批處理一部分的語句中使用CTE時,必須在其後面加上分號。

這已經讓我感受到了過去。

+0

現在我得到這個錯誤..以前的錯誤已經消失: 無法綁定多部分標識符「si.shi_flag」。 – SmartestVEGA 2010-06-23 08:36:06

+1

@SmartestVEGA好的,現在至少它的語法*正確。你現在面臨的問題是'si'作爲一個名字只在* CTE內有意義 - 主查詢中沒有這個名字。我不確定這個標準是否應該在每個子查詢(或其他)中的CTE定義中... – AakashM 2010-06-23 08:42:04

+0

可以請您更改查詢嗎? – SmartestVEGA 2010-06-23 08:43:48