2009-06-19 24 views
6

Próbuję wybrać wiele podsumowań warunkowych w wynik pojedynczej tabeli w bazie danych DB2.SQL (DB2) Zwraca wiele wartości warunkowych w jednym zapytaniu

przykład:

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... 

Każda pomoc jest doceniana.

+0

sprawdź moją odpowiedź. Zostawiam komentarz, ponieważ wydaje się, że wysyłają ostrzeżenia do użytkowników stackoverflow szybciej. – Eric

Odpowiedz

6

Będzie to policzyć wystąpienie każdego warunku:

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 
6
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 

Gdzie klauzula jest opcjonalna, ale może służyć pomocą. Również "else null" jest niejawne, gdy pominięto klauzulę else, więc możesz też bezpiecznie to wyłączyć.

1
select count(foo) 
    from t1 
where a = 1 
union 
select count(foo) 
    from t1 
where b = 2 
.... 
0

to to zrobi.

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 
Powiązane problemy