Usuário com melhor resposta
Duvida com o Select e o Count

Pergunta
-
Pessoal tenho uma tabela de imoveis que tem as seguintes colunas:
ID,int
codImobiliaria, int
status, smallint sendo 0=bloqueado e 1=liberado
eu preciso retornar uma lista com as seguintes colunas:
codImobiliaria, totalBloqueados, totalLiberados, TotalGeral
Como eu devo fazer a select para retornar estas colunas?
Obrigado
Respostas
-
João,
Segue um exemplo de implementação:
DECLARE @imoveis TABLE ( Id INT, codImobiliaria INT, [Status] INT ) INSERT INTO @imoveis VALUES (1, 1, 1), (2, 1, 0), (3, 2, 1) SELECT CodImobiliaria, SUM(CASE WHEN [Status] = 1 THEN 1 ELSE 0 END) As TotalLiberado, SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) As TotalBloqueado, COUNT(*) As TotalGeral FROM @imoveis GROUP BY codImobiliaria
<b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com
- Marcado como Resposta Joao Nivaldo quarta-feira, 17 de julho de 2013 17:43
- Editado Fabrizzio CaputoModerator quarta-feira, 17 de julho de 2013 17:51 erro em codigo
Todas as Respostas
-
João,
Segue um exemplo de implementação:
DECLARE @imoveis TABLE ( Id INT, codImobiliaria INT, [Status] INT ) INSERT INTO @imoveis VALUES (1, 1, 1), (2, 1, 0), (3, 2, 1) SELECT CodImobiliaria, SUM(CASE WHEN [Status] = 1 THEN 1 ELSE 0 END) As TotalLiberado, SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) As TotalBloqueado, COUNT(*) As TotalGeral FROM @imoveis GROUP BY codImobiliaria
<b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com
- Marcado como Resposta Joao Nivaldo quarta-feira, 17 de julho de 2013 17:43
- Editado Fabrizzio CaputoModerator quarta-feira, 17 de julho de 2013 17:51 erro em codigo
-
Somente para complementar tem essa forma também :
SELECT DISTINCT I.codImobiliaria,B.Tb As TotalBloqueados, L.Tl AS TotalLiberados FROM Imovel I INNER JOIN (SELECT codImobiliaria,COUNT(Status) As Tb FROM Imoveis WHERE Status = 0 GROUP BY codImobiliaria) B ON B.codImobiliaria = I.codImobiliaria INNER JOIN (SELECT codImobiliaria,COUNT(Status) AS Tl FROM Imoveis WHERE Status = 1 GROUP BY codImobiliaria) L ON L.codImobiliaria = I.codImobiliaria
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo quarta-feira, 17 de julho de 2013 17:37 Codigo
-