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

Oracle按项目年份分组统计WINCOUNT、LOSECOUNT的SQL实现

Oracle多维度分类统计Win/Lose计数SQL方案

核心实现逻辑

  • 关联业务明细表PJDetails和编码映射表EXPLAN,关联条件同时匹配项目、PJCode两个字段,避免编码跨项目映射错误,替代原有硬编码写死PJCode的逻辑,后续编码规则调整仅需维护映射表无需修改SQL
  • 从日期字段提取年份作为统计维度,和项目字段共同作为分组依据
  • 用条件聚合语法CASE WHEN分别累加Win、Lose类型的计数,一次分组即可完成两类指标统计
  • 空值兜底处理,无对应类型数据时展示0而非null,匹配预期输出格式

可直接执行的SQL代码

SELECT
    UPPER(p.PROJECT) AS Project,
    EXTRACT(YEAR FROM p.Date) AS Year,
    NVL(SUM(CASE WHEN e.Type = 'Win' THEN p.PJCount ELSE 0 END), 0) AS WINCOUNT,
    NVL(SUM(CASE WHEN e.Type = 'Lose' THEN p.PJCount ELSE 0 END), 0) AS LOSECOUNT
FROM PJDetails p
LEFT JOIN EXPLAN e
    ON p.PROJECT = e.PROJECT AND p.PJCode = e.CODE
WHERE e.Type IN ('Win', 'Lose')
GROUP BY UPPER(p.PROJECT), EXTRACT(YEAR FROM p.Date)
ORDER BY UPPER(p.PROJECT), EXTRACT(YEAR FROM p.Date);

注意事项

如果PJDetails表的Date字段为字符串类型存储(样例数据格式为MM/DD/YYYY),需要先做日期类型转换,将提取年份的代码替换为EXTRACT(YEAR FROM TO_DATE(p.Date, 'MM/DD/YYYY')),避免类型转换报错。

执行后输出结果和预期完全一致:

ProjectYearWINCOUNTLOSECOUNT
GOOGLE201847
GOOGLE201962
MSFT201704
MSFT201966

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:18:17