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

单表多列组合的COUNT统计查询实现方案咨询

看起来你在统计分组内多列的唯一值数量时遇到了语法和逻辑问题,我来帮你梳理下最简的实现方式:

首先,你的核心需求是按Column1(别名Name)分组,分别统计:

  • 每组内不同Column2的数量(C2Count)
  • 每组内不同Column3的数量(C3Count)
  • 每组内Column4+Column5组合的唯一数量(C4Count)

最简SQL实现(针对SQL Server,因为你用了#Temp临时表)

SELECT 
    Column1 AS Name,
    COUNT(DISTINCT Column2) AS C2Count,
    COUNT(DISTINCT Column3) AS C3Count,
    COUNT(DISTINCT CONCAT(Column4, '|', Column5)) AS C4Count
FROM #Temp
GROUP BY Column1

为什么你的原查询有问题?

  1. COUNT(DISTINCT Column1,Column2)语法错误:SQL Server不支持在COUNT(DISTINCT)中传入多列。不过因为我们已经按Column1分组了,每组内的Column1值是固定的,所以统计Column2的唯一值数量,就等价于统计(Column1,Column2)组合的唯一数量,直接用COUNT(DISTINCT Column2)更简洁。
  2. COUNT(Column1,Column4,Column5)语法完全错误:COUNT()只能接受单个参数。要统计多列组合的唯一性,需要把它们拼接成一个不会产生歧义的字符串(用|这类分隔符避免不同列值拼接后撞车,比如Column4='12' + Column5='34'和Column4='1' + Column5='234'会被区分开),再用DISTINCT统计。

结果验证

运行上面的语句后,会得到你期望的结果:

NameC2CountC3CountC4Count
AAA223
BBB111

如果是MySQL等支持多列DISTINCT的数据库,C4Count可以简化为COUNT(DISTINCT Column4, Column5),写法更直观,但上面的拼接方式在各种SQL方言中都通用。

内容的提问来源于stack exchange,提问作者Tech Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:43:57