目标/背景
- 我正在梳理工单系统以查看工单是否符合某些标准
- (例如,如果它们不是第 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 的所有计数结果都相同,尽管查询了某些情况并找到了一些我知道不同的情况。
- 这是实现我要计算的案例陈述的正确方法吗?
- 我应该改用 DECODE() 吗?
提前感谢您的帮助!