簡體   English   中英

Oracle到T-SQL CTE轉換錯誤

[英]Oracle to T-SQL CTE conversion errors

無法將Oracle語法轉換為T-SQL。 嘗試轉換以下語句:

SELECT *
FROM (WITH NEW_USERS AS (SELECT WPP.USER_ID
                         FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM WPP
                       MINUS
                       SELECT PP.USER_ID FROM DSS_ERS_STAGE.ES_PARTICIPANT_DIM PP)
     SELECT EWP.USER_ID
           ,EWP.CANDIDATE_1_0_FLAG
       FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM EWP
      INNER JOIN NEW_USERS N
         ON (EWP.USER_ID = N.USER_ID)
      WHERE EWP.CANDIDATE_1_0_FLAG = 1)

轉換嘗試:

SELECT *
FROM (WITH NEW_USERS AS (SELECT WPP.USER_ID
                         FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM WPP
                       EXCEPT
                       SELECT PP.USER_ID FROM DSS_ERS_STAGE.ES_PARTICIPANT_DIM PP)
     SELECT EWP.USER_ID
           ,EWP.CANDIDATE_1_0_FLAG
       FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM EWP
      INNER JOIN NEW_USERS N
         ON (EWP.USER_ID = N.USER_ID)
      WHERE EWP.CANDIDATE_1_0_FLAG = 1) 

SQL Server返回以下錯誤:

消息156,級別15,狀態1,第2行關鍵字“ WITH”附近的語法錯誤。

消息319,級別15,狀態1,第2行關鍵字“ with”附近的語法錯誤。 如果此語句是公用表表達式,xmlnamespaces子句或更改跟蹤上下文子句,則前一條語句必須以分號終止。

消息102,級別15,狀態1,第11行')'附近的語法不正確。

SQL Server 在子查詢中不允許CTE

WITH NEW_USERS AS (SELECT WPP.USER_ID
                   FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM WPP
                   EXCEPT    -- Oracle has MINUS
                   SELECT PP.USER_ID 
                   FROM DSS_ERS_STAGE.ES_PARTICIPANT_DIM PP)
SELECT EWP.USER_ID
       ,EWP.CANDIDATE_1_0_FLAG
FROM DSS_ERS_STAGE.ES_W_PARTICIPANT_DIM EWP
INNER JOIN NEW_USERS N
   ON (EWP.USER_ID = N.USER_ID)
WHERE EWP.CANDIDATE_1_0_FLAG = 1;

第二件事:SQL Server使用EXCEPT關鍵字代替MINUS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM