SQL 加入 CTE 时出现服务器语法错误

SQL Server syntax error when joining CTEs

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

我正在加入来自两个不同视图的两个 select 查询,即 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

错误信息如下:

Msg 102, Level 15, State 1, Line 21
Incorrect syntax near 'a'.
Msg 102, Level 15, State 1, Line 29
Incorrect syntax near ')'.

我还需要从 ARACCOUNT select编辑的字段出现在最终输出中。如何修改我的查询以包含我的 q2 selections?

两个 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