Google Sheets QUERY函数引用BY列触发PARSE_ERROR报错排查
报错原因
该报错和BY列的单元格格式无关,触发根源是:BY是QUERY函数底层查询语法的保留关键字,会被解析器识别为GROUP BY/ORDER BY子句的语法组成部分,不会被判定为列标识符,因此在解析到该位置时抛出语法匹配错误。
QUERY语法和标准SQL规则一致,所有语法关键字(比如SELECT、WHERE、AND、OR、BY、GROUP、ORDER、LIMIT等)如果直接作为列名书写,都会触发同类解析错误。
解决方法
你可以任选以下一种方案修复:
- 保留字转义
用反引号包裹作为列名的保留字BY,明确告诉解析器这是列标识符而非语法关键字,修改后的公式如下:
这是最简便的修复方式,不需要调整其他参数,也不会影响数据读取逻辑。=QUERY(XXXXXXXXXX!$A$1:$CJ,"select BL,BM,BN,BK,BP,BQ,BR,BO,BT,BU,BV,BS,BX,`BY`,BZ,BW,CB,CC,CD,CA,CF,CG,CH,CE where A > date '2022-03-21'") - 改用列序号引用
QUERY支持通过「Col+列在所选范围内的序号」格式引用列,这种写法不会触发关键字冲突。你所选的数据范围从A列开始,BY列是范围内的第77列,改写后的公式如下:
注意使用列序号写法时,需要将QUERY的第三个参数设为0,告知函数不要自动识别表头,避免列序号匹配偏移。=QUERY(XXXXXXXXXX!$A$1:$CJ,"select Col64,Col65,Col66,Col63,Col68,Col69,Col70,Col67,Col72,Col73,Col74,Col71,Col76,Col77,Col78,Col75,Col80,Col81,Col82,Col79,Col84,Col85,Col86,Col83 where Col1 > date '2022-03-21'",0)
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

