2010-06-23 51 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