如何将多个Google Sheet QUERY公式合并为单条查询语句
Google Sheets 两个QUERY公式合并方案
错误原因
你之前的写法无法运行有两个核心问题:
- 语法顺序不符合QUERY的类SQL规则:
WHERE子句必须放在所有SELECT后面的字段/计算表达式之后,不能插在SELECT的字段列表中间 - 返回维度不匹配:
Max(C)/Min(D)/Sum(E)是聚合计算,默认返回1行统计结果;SELECT B WHERE DAY(A)<=3返回若干行符合条件的B列值,二者直接并列在SELECT中会因行数不匹配报错。
可用合并公式
根据你实际需要的结果逻辑选择对应公式即可:
方案1:对A列日期天数≤3的筛选子集,按B列分组统计
如果你需要的是筛出DAY(A)<=3的行后,按B列维度分别计算对应的C最大值、D最小值、E总和,用这个公式:
=QUERY(A:E,"SELECT B, Max(C), Min(D), Sum(E) WHERE DAY(A)<=3 GROUP BY B")
方案2:纵向拼接结果(先返回符合条件的B列,末尾追加聚合统计值)
如果你需要先列出所有DAY(A)<=3的B列值,再在结果最后一行显示这批数据的C最大值、D最小值、E总和,用这个公式:
={ QUERY(A:E,"SELECT B WHERE DAY(A)<=3"); QUERY(A:E,"SELECT Max(C),Min(D),Sum(E) WHERE DAY(A)<=3 LABEL Max(C)'',Min(D)'',Sum(E)''") }
说明:公式里的LABEL子句作用是去掉聚合列默认生成的长表头,不需要可以删除。
方案3:横向拼接结果(全表聚合值+符合条件的B列同屏显示)
如果你需要在第一行显示全表范围的C最大值、D最小值、E总和,旁边列同步显示所有DAY(A)<=3的B列值,用这个公式:
={ QUERY(A:E,"SELECT Max(C),Min(D),Sum(E)"), QUERY(A:E,"SELECT B WHERE DAY(A)<=3") }
说明:该公式中聚合值仅在结果第一行显示,其余行的聚合列留空。如果需要聚合值对所有B列行重复显示,把第一个QUERY替换为IFERROR(SEQUENCE(COUNTA(QUERY(A:E,"SELECT B WHERE DAY(A)<=3"))/1)^0*QUERY(A:E,"SELECT Max(C),Min(D),Sum(E)"))即可。
内容的提问来源于stack exchange,提问作者NG_
相关产品推荐
相关产品推荐

