[英]“Incorrect syntax” when using a common table expression
WITH list_dedup (Company, duplicate_count) AS
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY Company ORDER BY Email) AS 'RowNumber'
FROM
Travels
)
错误 :
Msg 102,第15级,状态1,第7行
')'附近的语法不正确。
您缺少公用表表达式的最终选择( 在 CTE定义之后 ):
WITH list_dedup (Company,duplicate_count) As
(
select *,
ROW_NUMBER() OVER (PARTITION BY Company ORDER by Email) As "RowNumber"
From Travels
)
select * from list_dedup;
但这不是因为CTE被定义为具有两列(通过WITH list_dedup (Company,duplicate_count)
),而是您在CTE中选择的内容至少返回了三列(公司,电子邮件,行号)。 您需要调整CTE的列定义,或者完全忽略它:
WITH list_dedup As
(
select *,
ROW_NUMBER() OVER (PARTITION BY Company ORDER by Email) As "RowNumber"
From Travels
)
select *
from list_dedup;
定义列列表时,内部选择中的As "RowNumber"
也没有意义,因为CTE定义随后定义了列名称。 CTE 内部使用的任何别名在其外部均不可见( 如果在with .. (...) as
中指定了CTE列)。
您刚刚设置了 CTE-现在需要使用它!
WITH list_dedup (Company, duplicate_count) AS
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY Company ORDER BY Email) AS 'RowNumber'
FROM
Travels
)
SELECT *
FROM list_dedup
; WITH list_dedup(公司,重复计数)AS(SELECT *,ROW_NUMBER()OVER(按公司ORDER BY电子邮件的拼写)AS'RowNumber'from Travels)
选择* FROM list_dedup
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.