SQL查询报Expected keyword AS but got "("错误该如何修正
Syntax error: Expected keyword AS but got "(" at [1:15]
报错原因
这个语法错误和你使用的SQL引擎语法规则有关:你当前使用的是BigQuery引擎,它不支持在WITH子句定义CTE(公共表表达式)时,在CTE名称后直接加括号手动指定列名的写法——这种写法是SQL Server、PostgreSQL等部分SQL方言支持的特性,BigQuery未做兼容。引擎解析到PopvsVac后的左括号时,默认此处应该紧跟AS关键字,因此直接抛出语法错误。
修复方法
你在CTE内部的SELECT语句里已经为所有返回字段定义了正确的别名,不需要在CTE头部额外重复声明列名,直接删掉CTE名后紧跟的列名括号部分即可正常运行。
修正后的完整SQL代码如下:
WITH PopvsVac AS (SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations, SUM(CONVERT(int, vac.new_vaccinations)) OVER (PARTITION BY dea.location ORDER BY dea.location,dea.date) AS RollingPeopleVaccinated FROM `phonic-scheme-348721.covid_deaths.deaths` dea JOIN `phonic-scheme-348721.covid_vaccine.vaccine` vac ON dea.location = vac.location AND dea.date = vac.date WHERE dea.continent is NOT NULL ) SELECT * FROM PopvsVac
内容的提问来源于stack exchange,提问作者Ahmad Zayed
相关产品推荐
相关产品推荐

