【发布时间】:2012-12-22 09:16:38
【问题描述】:
目标/背景
- 我正在梳理工单系统以查看工单是否符合特定标准
- (例如,如果它们不是第 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() 吗?
提前感谢您的帮助!
【问题讨论】:
标签: sql oracle plsql count case