You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复报子查询多列返回错误的SQL查询语句?

错误原因
  • 核心语法问题:你放在SELECT列表中的三个子查询每个都返回了CREATEDBY、统计值两列,且每个子查询会返回多行结果(每个创建人对应一行),SQL语法明确要求,非EXISTS引入的子查询如果放在字段列表中,只能返回1行1列的标量结果,这是你触发报错的直接原因。
  • 细节语法错误:所有CREATEDBY IN ('Adam', 'John', 'Molly'语句都缺少右括号,即使解决了子查询问题也会触发语法报错。
修正方案

推荐使用条件聚合写法,仅需扫描一次表,执行效率远高于多子查询写法,完全满足你按创建人统计不同时间段新增客户数的需求:

SELECT 
    CREATEDBY,
    SUM(CASE WHEN CREATEDAT BETWEEN '2021-06-17' AND '2021-07-17' THEN 1 ELSE 0 END) AS FIRSTMONTH,
    SUM(CASE WHEN CREATEDAT BETWEEN '2021-07-17' AND '2021-08-17' THEN 1 ELSE 0 END) AS SECONDMONTH,
    SUM(CASE WHEN CREATEDAT BETWEEN '2021-08-17' AND '2021-09-17' THEN 1 ELSE 0 END) AS THIRDMONTH
FROM CUSTOMERSTABLE
WHERE 
    CREATEDBY IN ('Adam', 'John', 'Molly')
    AND CREATEDAT BETWEEN '2021-06-17' AND '2021-09-17'
GROUP BY CREATEDBY

补充提示

如果你的CREATEDAT字段包含时分秒格式,建议将时间判断逻辑从BETWEEN改为左闭右开写法,避免遗漏对应结束日期当天有时分秒的记录,示例:
CASE WHEN CREATEDAT >= '2021-06-17' AND CREATEDAT < '2021-07-18' THEN 1 ELSE 0 END

内容的提问来源于stack exchange,提问作者Olly O'neil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:27:01