CTE查询报'Incorrect syntax near ')''错误,如何修复?
修复SQL CTE语法错误:Incorrect syntax near ')'
你遇到的错误核心原因是CTE定义完成后没有跟上任何引用该CTE的查询语句。在SQL Server中,CTE(公共表表达式)只是临时结果集的定义,必须紧接着对其进行调用(比如SELECT、UPDATE等操作),否则会触发语法错误。
结合你已经完成的适配调整(转换为bigint、显式指定ROWS UNBOUNDED PRECEDING),修复后的完整查询如下:
WITH PopvsVac ( Continent, location, date, population, new_vaccinations, RollingPeopleVaccinated ) AS ( SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations, SUM(CAST(vac.new_vaccinations AS bigint)) OVER ( PARTITION BY dea.location ORDER BY dea.location, dea.date ROWS UNBOUNDED PRECEDING ) AS RollingPeopleVaccinated FROM PortfolioProject..CovidDeaths AS dea INNER JOIN PortfolioProject..CovidVaccinations AS vac ON dea.location = vac.location AND dea.date = vac.date WHERE dea.continent IS NOT NULL ) -- 必须添加这部分:引用CTE的查询语句,这里以查询所有字段为例,可按需修改 SELECT * FROM PopvsVac
额外说明:
- 你之前对
new_vaccinations转换为bigint、添加ROWS UNBOUNDED PRECEDING的调整是正确的,适配了更新后的表结构,避免了数据溢出和窗口函数的歧义问题。 - 如果你不需要查询所有字段,可以把
SELECT *替换为具体列,比如SELECT location, date, population, RollingPeopleVaccinated FROM PopvsVac。
内容的提问来源于stack exchange,提问作者JoePegasus
相关产品推荐
相关产品推荐

