SQL (DB2) Retorno múltiplas contagens condicionais em uma única consulta

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

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu estou tentando selecionar vários resumos condicionais em um único resultado da tabela em um banco de dados baseado DB2.

Exemplo:

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

Qualquer ajuda é apreciada.

Foi útil?

Solução

Este vai contar a ocorrência de cada condição:

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

Outras dicas

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

Onde cláusula é opcional estritamente falando, mas pode ajudar o desempenho. Também "senão nulo" está implícita quando a cláusula else é omitido para que você pode deixar que fora também.

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

Isso vai fazê-lo.

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 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top