gpt4 book ai didi

sql - Oracle - 计算 CASE 语句的结果

转载 作者:行者123 更新时间:2023-12-04 14:28:04 26 4
gpt4 key购买 nike

目标/背景

  • 我正在梳理工单系统以查看工单是否满足特定条件
    • (例如,如果他们不是第 3 阶段、第 2 阶段,甚至第 1 阶段)。
  • 这些“阶段”已由管理层定义。
  • 我想按报告的年份分组,然后按工艺分组,然后查看在这 3 个“非阶段”的每个阶段中该分组有多少工单。

查询

select yearreported
, theleadcraft
, count(NotStage3)
, count(NotStage2)
, count(NotStage1)

from
(
select extract(year from reportdate) as YearReported
, Nvl(leadcraft, 'NONE') as TheLeadCraft
, CASE when status not in ('CAN', 'CLOSE') then 1 else 0 END as NotStage3
, CASE when status not in ('CAN', 'CLOSE', 'COMP') then 1 else 0 END as NotStage2
, CASE when status not in ('CAN', 'CLOSE', 'COMP', 'WORKDONE') then 1 else 0 END as NotStage1
from workorder
) query

group by yearreported, theleadcraft;
;

问题/问题

  • 这似乎可行,但 notstage1、notstage2 和 notstage1 的所有计数结果都是一样的,尽管查询了一些情况并发现了一些我知道不同的情况。
  • 这是实现我要计算的 case 语句的正确方法吗?
  • 我应该改用 DECODE() 吗?

在此先感谢您的帮助!

最佳答案

1 和 0 都与 COUNT() 相同——可能您想要 SUM() 或 COUNT() 为 1 或 null。

关于sql - Oracle - 计算 CASE 语句的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com