SQL (DB2) Renvoie plusieurs nombres conditionnels dans une requête unique.

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

  •  06-07-2019
  •  | 
  •  

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.

Était-ce utile?

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
scroll top