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

SQL中实现类似Excel COUNTIF的筛选去重计数及行列转换方法

实现类似Excel COUNTIF的带筛选去重计数+行转列统计

要得到你想要的统计结果,需要同时完成两个核心操作:

  • 给去重计数加筛选条件,实现类似Excel COUNTIF的效果
  • 把GROUP BY生成的分组行结果,转换成按用户分组、各Case Type作为列的形式

直接可用的SQL代码

SELECT
  Case_Owner_Name__c AS Name,
  -- 统计Endorsement类型的去重Case #数量
  COUNT(DISTINCT CASE WHEN Case_Type__c = 'Endorsement' THEN CaseNumber END) AS Endorsement,
  -- 统计Quote类型的去重Case #数量
  COUNT(DISTINCT CASE WHEN Case_Type__c = 'Quote' THEN CaseNumber END) AS Quote,
  -- 统计Phone Call类型的去重Case #数量
  COUNT(DISTINCT CASE WHEN Case_Type__c = 'Phone Call' THEN CaseNumber END) AS `Phone Call`
FROM slss.case
GROUP BY Case_Owner_Name__c;

代码逻辑说明

  1. 带筛选的去重计数:
    • 用CASE WHEN判断当前记录的Case Type是否符合目标类型,符合就保留CaseNumber,不符合就返回NULL
    • COUNT(DISTINCT)会自动忽略NULL值,只对符合条件的非重复CaseNumber计数,完全实现了你要的“筛选后去重计数”需求
  2. 行转列处理:
    • 每个Case Type单独写一条COUNT(DISTINCT CASE...)语句,作为结果中的一列
    • 最后按Case_Owner_Name__c分组,就能得到每个用户对应各类型的统计数,没有对应类型的会自动显示0

额外提示

如果你的Case Type还有其他取值,直接照着现有格式新增对应的列就行。要是Case Type是动态变化的(比如随时会新增类型),不同数据库有对应的动态行转列方案(比如MySQL用预处理语句、PostgreSQL用crosstab、SQL Server用PIVOT),但针对你给出的固定类型场景,上面的静态写法最简单高效。

内容的提问来源于stack exchange,提问作者Jason Hendry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:27:27