Ir para conteúdo

POWERED BY:

Arquivado

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

nobody32165479

[Resolvido] Select + Case + Group by?

Recommended Posts

Olha eu aqui de novo :P

 

To fuçando no SQL e estou tentando fazer o seguinte:

 

(Coluna1 + "-" + Coluna2) As Tipo, (Se Coluna3='' entao contagem Vazio', '' as Vazios), (Se Coluna3!='' entao contagem Nao Vazio, '' as NVazios) from Dados Group BY(Coluna1 + "-" + Coluna2) Para obter a Seguinte tabela

Tipo | Vazios(Contagem de repetições dos tipos que tem a Coluna3 vazia) | NVazios(Contagem de repetições dos tipos que não tem a Coluna3 vazia)

 

Só que ele Retorna o erro:

Column 'dados.Coluna3' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Column 'dados.Coluna3' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

 

O código que estou tentando é esse:

SELECT (Coluna1 + '-' + Coluna2) As Tipo, CASE WHEN Coluna3 = '' THEN Count(Coluna1 + '-' + Coluna2) WHEN Coluna3 != '' THEN '' END AS Vazio, CASE WHEN Coluna3 = '' THEN '' WHEN Unidade_de_Avaliação != Count(Coluna1 + '-' + Coluna2) THEN '' END AS Nvazios From dados Group By (Coluna1 + '-' + Coluna2)

 

Oq estou fazendo de errado?

PS. Se eu tirar os CASE's e colocar só um count coluna1+coluna2 ele exibe uma outra coluna com a contagem de repeticoes mas nao mostra se é vazio ou nao :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

O pessoal do MSDN me ajudou com a resposta do Leonardo Marcelino:

 

SELECT

(Coluna1 + '-' + Coluna2) AS TIPO,

COUNT(CASE WHEN Coluna3 = '' THEN Coluna3 END) AS VAZIO,

COUNT(CASE WHEN Coluna3 != '' THEN Coluna3 END) AS NVAZIOS

FROM

Dados

GROUP BY

(Coluna1 + '-' + Coluna2)

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Fica ai para quem tiver a mesma dúvida http://forum.imasters.com.br/public/style_emoticons/default/joia.gif ;)

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.