2016-04-07 1 views
-2
select trim(man_date_created) createddate,count(*) recordcount 
from man 
where man_status IN ('received','acknowledge') 

私はそれぞれのようなカウントを受け入れたいと思っています。どのように私はそれを抽出できますか?IN演算子に存在する各要素の数を取得する方法は?

+1

なぜJavaタグですか? SQLでGROUP BYを見てください。 – mrbela

答えて

1

使用条件付き集約

select trim(man_date_created) createddate, 
     count(*) recordcount, 
     count(case when man_status = 'ACCEPTED' then 1 end) as accepted, 
     count(case when man_status = 'SUBMITTED' then 1 end) as submitted, 
     count(case when man_status = 'CREATED' then 1 end) as created, 
     count(case when man_status = 'REJECTED' then 1 end) as rejected 
from man 
where man_status IN ('ACCEPTED','SUBMITTED','CREATED','REJECTED') 
group by man_date_created 
+2

group by句はありませんか? – jarlh

+0

@jarlhはい、あなたは正しいです。 –

0

私は単にGROUP BYにしてください。 (派生テーブルでtrim一部では、ANSI SQLに準拠するように。)

select createddate, man_status, count(*) 
from 
(
    select trim(man_date_created) createddate, man_status 
    from man 
    where man_status IN ('ACCEPTED','SUBMITTED','CREATED','REJECTED') 
) 
group by createddate, man_status 
0

はその後inの代わりにleft joinを使用し、彼らがゼロである場合でも、あなたがカウントをしたいと仮定すると:

select s.status, count(man.man_status) as recordcount 
from (select 'ACCCEPTED' as status from dual union all 
     select 'SUBMITTED' as status from dual union all 
     select 'CREATED' as status from dual union all 
     select 'REJECTED' as status from dual union all 
    ) s left join 
    man 
    on man.man_status = s.status 
group by s.status; 

を含めます日付もクエリを複雑にします。

関連する問題