加入CTE时出现SQL Server语法错误

use*_*933 2 sql sql-server select join syntax-error

我正在使用SQL Server 2014,我在下面的SQL查询时遇到问题.似乎某处存在语法错误,但我找不到它.

我正在从两个单独的视图中加入两个选择查询,即ReservationListARACCOUNT.

USE MyDatabase

;WITH q1 AS (
    select * 
    from ReservationList
    WHERE [Market Segment Code] <> 'COMP' AND 
    NOT (Status] = 'CANCELED' OR [Status] = 'NOSHOW' OR [Status] = 'WAITLIST') AND 
    NOT [Departure Date] < '2014-07-01' AND 
    NOT [Market Segment Code] = 'COMP' AND 
    NOT [Arrival Date] = [Departure Date]
)a

q2 AS (
    SELECT 
        [PMSConfirmationNumber],
        [FOC ACCOUNT],
        [AR ACCOUNT NAME]
    FROM 
        ARACCOUNT
)b

Select 
    q1.* 
from 
    q1
    JOIN q2 ON q1.PmsConfirmatioNnumber = q2.foh_PmsConfirmationNumber
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

Msg 102, Level 15, State 1, Line 21
Incorrect syntax near 'a'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near ')'.
Run Code Online (Sandbox Code Playgroud)

我还需要从ARACCOUNT中选择的字段出现在最终输出中.如何修改我的查询以包含我的q2选择?

Mur*_*nik 5

你错过了两个CTE之间的逗号.另外,删除别名 - 定义CTE时不需要它们:

;WITH q1 AS (


 select * 

 from ReservationList

 WHERE [Market Segment Code] <> 'COMP'

 AND NOT ([Status] = 'CANCELED' OR [Status] = 'NOSHOW' OR [Status] = 'WAITLIST')

 AND NOT [Departure Date] < '2014-07-01'

 AND NOT [Market Segment Code] = 'COMP'

 AND NOT [Arrival Date] = [Departure Date]

), -- alias dropped and comma added here

q2 AS (

SELECT [PMSConfirmationNumber],[FOC ACCOUNT],[AR ACCOUNT NAME]

 FROM ARACCOUNT

) -- alias dropped

Select q1.*, q2.* from q1
JOIN q2 ON q1.PmsConfirmatioNnumber = q2.foh_PmsConfirmationNumber
Run Code Online (Sandbox Code Playgroud)