SQL (DB2) Gibt mehrere bedingte Zählungen in einer einzigen Abfrage
Frage
Ich versuche, wählen Sie mehrere bedingte Zusammenfassungen in einer einzigen Tabelle Ergebnis auf einer DB2-basierte Datenbank.
Beispiel:
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...
Jede Hilfe ist willkommen.
Lösung
Dies wird das Auftreten von jeder Bedingung zählen:
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
Andere Tipps
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-Klausel ist optional streng genommen aber kann die Leistung unterstützen. „Else null“ auch implizit, wenn die else-Klausel weggelassen wird, so dass Sie sicher auch, dass weglassen können.
select count(foo)
from t1
where a = 1
union
select count(foo)
from t1
where b = 2
....
Dies wird es tun.
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow