SQL 加入 CTE 时出现服务器语法错误
SQL Server syntax error when joining CTEs
我正在使用 SQL Server 2014,但我在下面的 SQL 查询中遇到了问题。似乎某处存在语法错误,但我就是找不到它。
我正在加入来自两个不同视图的两个 select 查询,即 ReservationList
和 ARACCOUNT
。
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
我正在使用 SQL Server 2014,但我在下面的 SQL 查询中遇到了问题。似乎某处存在语法错误,但我就是找不到它。
我正在加入来自两个不同视图的两个 select 查询,即 ReservationList
和 ARACCOUNT
。
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