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.

War es hilfreich?

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