SSMS最新版本中CTE查询报Msg 102语法错误,请求修正
修正CTE语法错误
报错的原因是你仅定义了CTE(公共表表达式),但没有在CTE定义后添加引用它的查询语句。SQL Server要求CTE定义完成后必须立即跟随SELECT、INSERT、UPDATE或DELETE等操作来使用这个临时结果集。
以下是修正后的代码示例(这里用SELECT *来查询CTE的所有内容,你可以根据需求修改查询逻辑):
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 int ) ) OVER ( PARTITION BY dea.location ORDER BY dea.location, dea.date ) AS RollingPeopleVaccinated FROM covidDeaths dea JOIN covidVaccinations vac ON dea.location = vac.location AND dea.date = vac.date WHERE dea.continent IS NOT NULL ) -- 必须添加引用CTE的查询语句 SELECT * FROM PopVsVac;
如果需要更复杂的逻辑,比如筛选特定地区、计算接种率等,只需要把最后的SELECT * FROM PopVsVac;替换成对应的查询即可。
内容的提问来源于stack exchange,提问作者SAURABH AHALAWAT
相关产品推荐
相关产品推荐

