SQL(DB2)単一のクエリで複数の条件付きカウントを返す

StackOverflow https://stackoverflow.com/questions/1018469

  •  06-07-2019
  •  | 
  •  

質問

DB2ベースのデータベースで、複数の条件付きサマリーを選択して単一のテーブル結果にしようとしています。

例:

SELECT COUNT(FOO) FROM T1 WHERE T1.A=1 AS A_COUNT,
SELECT COUNT(FOO) FROM T1 WHERE T1.B=2 AS B_COUNT
Ext...

ご協力をお願いします。

役に立ちましたか?

解決

これにより、各条件の発生がカウントされます。

select sum(case when t1.a = 1 then 1 else 0 end) as A_COUNT
     , sum(case when t1.b = 2 then 1 else 0 end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2

他のヒント

select count(case when t1.a = 1 then foo else null end) as A_COUNT
     , count(case when t1.b = 2 then foo else null end) as B_COUNT
  from t1
 where t1.a = 1
    or t1.b = 2

厳密に言えば、Where句はオプションですが、パフォーマンスに役立つ場合があります。また、「その他のヌル」もelse節が省略されている場合は暗黙的であるため、それも同様にオフにしておくことができます。

select count(foo)
  from t1
 where a = 1
union
select count(foo)
  from t1
 where b = 2
....

これで実行できます。

SELECT  A_COUNT as Type ,COUNT(FOO) FROM T1 WHERE T1.A=1, 

Union


SELECT B_COUNT as Type, COUNT(FOO) FROM T1 WHERE T1.B=2 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top