Count em Consulta SQL

Delphi

10/03/2008

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.


Armindo

Armindo

Curtidas 0

Respostas

Joaoshi

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.


GOSTEI 0
Emerson Nascimento

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
POSTAR