目標/背景
- 作業指示書が特定の基準を満たしているかどうかを確認するために、作業指示書システムを調べています
- (たとえば、ステージ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()を使用する必要がありますか?
助けてくれてありがとう!