SQL (DB2) Renvoie plusieurs nombres conditionnels dans une requête unique.
Question
J'essaie de sélectionner plusieurs résumés conditionnels dans un seul résultat de table sur une base de données DB2.
Exemple:
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...
Toute aide est appréciée.
La solution
Ceci comptera l'occurrence de chaque condition:
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
Autres conseils
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
Où la clause est optionnelle à proprement parler mais peut aider à la performance. Aussi " else null " est implicite lorsque la clause else est omise afin que vous puissiez également la laisser en toute sécurité.
select count(foo)
from t1
where a = 1
union
select count(foo)
from t1
where b = 2
....
Cela le fera.
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow