【发布时间】:2015-08-19 23:19:29
【问题描述】:
我使用的是 SQL Server 2014,但在下面的 SQL 查询中遇到问题。似乎某处存在语法错误,但我找不到它。
我正在加入来自两个不同视图的两个选择查询,即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 中选择的字段出现在最终输出中。如何修改我的查询以包含我的 q2 选择?
【问题讨论】:
-
在您的第一个
CTE上将a替换为,。)a应该是),。 -
我收到以下错误消息:消息 102,级别 15,状态 1,第 29 行 ')' 附近的语法不正确。它现在指的是b。
-
在
CTE名称出现之前AS,不需要像a或b这样的别名。 -
您似乎使用得不多。如果您只使用正确的运算符,您的代码可能会更容易阅读,例如 "NOT =" 和 "NOT = " vs "!="
标签: sql sql-server select join syntax-error