You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL创建简单CTE报错求助:为何出现语法错误?

你的CTE语法错误原因及修正方案

嘿,我一眼就瞅出问题所在啦!你的CTE定义本身是没问题的,但T-SQL对CTE有个硬性要求——定义完CTE之后必须立刻跟上引用它的查询语句,不能就这么戛然而止。你现在的代码只创建了employeecount_CTE这个公共表表达式,却没有任何语句去调用它,这就触发了语法错误。

修正后的完整代码

use AdventureWorks2012
go
With employeecount_CTE ([MaritalStatus], totalemployees) as (
 select [MaritalStatus], count(*) as totalemployees
 from [HumanResources].[Employee]
 group by [MaritalStatus]
)
-- 必须加上引用CTE的查询语句,比如查询所有结果
select * from employeecount_CTE;

关键点说明

  • CTE本质是临时结果集,它不像临时表可以先创建后使用,必须在定义后的同一条批处理语句里直接引用。
  • 如果你需要对这个CTE做更多操作(比如筛选、排序),也可以直接在后续查询里处理,比如:
use AdventureWorks2012
go
With employeecount_CTE ([MaritalStatus], totalemployees) as (
 select [MaritalStatus], count(*) as totalemployees
 from [HumanResources].[Employee]
 group by [MaritalStatus]
)
select [MaritalStatus], totalemployees
from employeecount_CTE
where totalemployees > 100 -- 筛选员工数超过100的婚姻状态
order by totalemployees desc;

内容的提问来源于stack exchange,提问作者The Maestro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:23:13