Count em Consulta SQL
Olá,
Quero saber quantos clientes tem a tabela de clientes e quantos estão ativos e quantos estão inativos.
Veja a consulta que fiz (mas que não dá certo, pois retorna sempre 2, mas a tabela tem centenas de registros):
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´SELECT COUNT(CODIGO) AS TOT_CLIENTES, ´+
´(CASE ATIVO WHEN ´+´´´S´´´+´ THEN COUNT(*) END)AS TOT_ATIVOS, ´+
´(CASE ATIVO WHEN ´+´´´N´´´+´ THEN COUNT(*) END)AS TOT_INATIVOS ´+
´FROM CLIENTES GROUP BY ATIVO ´);
SQLQuery1.Open;
Nessa consulta, tanto o TOT_CLIENTES, quanto o TOT_ATIVOS retorna 2, mas tem vários registros.
Onde estou errando?
Obrigado.
Quero saber quantos clientes tem a tabela de clientes e quantos estão ativos e quantos estão inativos.
Veja a consulta que fiz (mas que não dá certo, pois retorna sempre 2, mas a tabela tem centenas de registros):
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´SELECT COUNT(CODIGO) AS TOT_CLIENTES, ´+
´(CASE ATIVO WHEN ´+´´´S´´´+´ THEN COUNT(*) END)AS TOT_ATIVOS, ´+
´(CASE ATIVO WHEN ´+´´´N´´´+´ THEN COUNT(*) END)AS TOT_INATIVOS ´+
´FROM CLIENTES GROUP BY ATIVO ´);
SQLQuery1.Open;
Nessa consulta, tanto o TOT_CLIENTES, quanto o TOT_ATIVOS retorna 2, mas tem vários registros.
Onde estou errando?
Obrigado.
Armindo
Curtidas 0
Respostas
Joaoshi
10/03/2008
Colega, com Firebird você poderia tentar assim:
SELECT
(SELECT COUNT(*) FROM CLIENTES) AS TOTALREGISTROS,
(SELECT COUNT(*) FROM CLIENTES WHERE ATIVO = ´S´) AS TOTALATIVO,
(SELECT COUNT(*) FROM CLIENTES WHERE ATIVO = ´N´) AS TOTALINATIVO
FROM RDB$DATABASE;
Espero ter ajudado.
SELECT
(SELECT COUNT(*) FROM CLIENTES) AS TOTALREGISTROS,
(SELECT COUNT(*) FROM CLIENTES WHERE ATIVO = ´S´) AS TOTALATIVO,
(SELECT COUNT(*) FROM CLIENTES WHERE ATIVO = ´N´) AS TOTALINATIVO
FROM RDB$DATABASE;
Espero ter ajudado.
GOSTEI 0
Emerson Nascimento
10/03/2008
SELECT COUNT(CODIGO) AS TOT_CLIENTES, SUM((CASE ATIVO WHEN ´S´ THEN 1 ELSE 0 END)) TOT_ATIVOS, SUM((CASE ATIVO WHEN ´N´ THEN 1 ELSE 0 END)) TOT_INATIVOS FROM CLIENTES
GOSTEI 0