質問
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
所属していません StackOverflow