Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BrunoKNS

[Resolvido] [Query] consulta

Recommended Posts

O que ha de errado nessa Query ?

 

SELECT T.CAMPOG AS ESTADO,

COUNT (F.STATUS) AS ATIVO,

COUNT (P.STATUS) AS INATIVO

FROM TABELA T, TABELA P

WHERE F.STATUS = 1

AND P.STATUS = 0

GROUP BY T.CAMPOG

 

Essa query trás informações inconsistentes, pois acho que multiplica os dados, porem o que eu preciso eu consigo trazer em duas queries diferentes.

 

Exemplo

SELECT T.ESTADO, COUNT (T.STATUS) AS ATIVO

FROM TABELA T

WHERE T.STATUS = 1

GROUP BY T.ESTADO

 

O que eu preciso é trazer a quantidade de ativos e inativos dos estados é o mesmo campo que preciso calcular os ativos e inativos

 

 

Agradeço desde já agradeço quem ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites
Essa query trás informações inconsistentes, pois acho que multiplica os dados, porem o que eu preciso eu consigo trazer em duas queries diferentes.

 

Pode estar havendo um produto cartesiano indevido, pois parece que não foi feito o join.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, havia percebido isso tbm [falta do join] porem quando inseri a verificação não retorna registro algum.

 

Tentei tambem a solução usando CASE porem ele traz a COUNT de tudo de ambos os lados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, havia percebido isso tbm [falta do join] porem quando inseri a verificação não retorna registro algum.

 

Tentei tambem a solução usando CASE porem ele traz a COUNT de tudo de ambos os lados

 

tenta assim:

SELECT CAMPOG AS ESTADO,
COUNT (case when STATUS = 1 then 1 else 0 end) AS ATIVO,
COUNT (case when STATUS = 0 then 1 else 0 end) AS INATIVO
FROM TABELA 
GROUP BY T.CAMPOG

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peqeuna correção, pois com assim não funcionaria.

 

SELECT CAMPOG AS ESTADO,
sum(case when STATUS = 1 then 1 else 0 end) AS ATIVO,
sum(case when STATUS = 0 then 1 else 0 end) AS INATIVO
FROM TABELA 
GROUP BY T.CAMPOG

 

ou

 

SELECT CAMPOG AS ESTADO,
COUNT (case when STATUS = 1 then 1 else null end) AS ATIVO,
COUNT (case when STATUS = 0 then 1 else null end) AS INATIVO
FROM TABELA 
GROUP BY T.CAMPOG

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Pessoal muito obrigado pelo empenho em me ajudar

vou realizar os testes e informo Obrigadu

 

A principio funcionou !

ficou ótimo porem o que acontece:

 

Essa é a situação:

 

Estado

Estado COD_ESTADO

São Paulo 1

Minas Gerais 2

Rio de Janeiro 3

 

Objetos Ativos

OBJETO STATUS COD_ESTADO

calculadora 1 1

calculadora 0 1

calculadora 1 2

calculadora 1 2

calculadora 0 3

calculadora 0 3

 

 

RESULTADO ESPERADO

ESTADO OBJETO_ATIVO OBJETO_INATIVO

São Paulo 1 1

Minas Gerais 2 0

Rio de Janeiro 0 2

 

 

 

no resultado esperado esta trazendo assim

RESULTADO ESPERADO

ESTADO OBJETO_ATIVO OBJETO_INATIVO

São Paulo 1 0

São Paulo 0 1

Minas Gerais 2 0

Rio de Janeiro 0 2

 

e a ideia era trazer todo o conteudo sem duplicação da primeira coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

na estrutura que passou acima as consultas com sum ou com count funcionam corretamente e fazem a agregação dos valores, deve ser algo no seu join, posta como esta fazendo o comando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera eu descobri onde estava errando, no comando

 

SELECT CAMPOG AS ESTADO,

COUNT (case when STATUS = 1 then 1 else null end) AS ATIVO,

COUNT (case when STATUS = 0 then 1 else null end) AS INATIVO

FROM TABELA

GROUP BY T.CAMPOG

 

eu estava acrescentando campos no group by

 

SELECT CAMPOG AS ESTADO,

COUNT (case when STATUS = 1 then 1 else null end) AS ATIVO,

COUNT (case when STATUS = 0 then 1 else null end) AS INATIVO

FROM TABELA

GROUP BY T.CAMPOG, STATUS, STATUS

 

 

Muito Obrigado a todos pelo empenho em me ajudar !

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.