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

如何编写SQL查询按不同产品返回多维度计数结果

修正后的SQL查询(按产品统计多维度数量)

原查询的核心问题

  1. COUNT函数的条件逻辑写法错误,不符合SQL语法规范
  2. 表别名引用混乱(原查询中的c未定义)
  3. GROUP BY包含多余字段,导致分组维度错误
  4. NULL值的判断方式错误(IN无法匹配NULL)
  5. 多余的SELECT DISTINCT(GROUP BY已实现分组去重)

修正后的SQL语句

SELECT
    t1.product AS Type, 
    COUNT(DISTINCT t3.id) AS [Total Count],
    COUNT(DISTINCT CASE WHEN t3.qDate >= '2023-06-06 00:00:00.0000000' THEN t3.id END) AS [Count < One Year], 
    COUNT(DISTINCT CASE WHEN t3.qDate >= '2022-06-06 00:00:00.0000000' THEN t3.id END) AS [Count < Two Year] 
FROM 
    [table1] t1
JOIN
    [table2] t2 ON t1.ID = t2.ID
JOIN 
    [table3] t3 ON t2.mb = t3.mb
WHERE 
    status = 'P' OR status IS NULL
GROUP BY 
    t1.Product
ORDER BY
    t1.Product

关键修正说明

  • COUNT条件逻辑:用CASE WHEN筛选符合日期条件的记录,仅当条件满足时返回t3.id,COUNT会自动忽略NULL值,从而得到符合条件的去重数量。
  • 表别名统一:将原查询中未定义的c替换为实际表别名t3(若qDate和id来自其他表,可根据实际结构调整别名)。
  • GROUP BY调整:仅保留t1.Product作为分组字段,确保按产品维度汇总数据。
  • NULL值判断:将status IN ('P', NULL)改为status = 'P' OR status IS NULL,正确匹配NULL状态的记录。
  • 移除多余DISTINCT:GROUP BY已经完成分组,SELECT DISTINCT属于冗余操作,直接删除。

预期输出

Type        Total Count     Count < One Year    Count < Two Year
----------------------------------------------------------------
Van          10000           3000                7000
Car          50000          30000               70000
Truck         5000            200                 500 

内容的提问来源于stack exchange,提问作者John O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:42:46