Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
select distinct(CampoConhecimento ) as CampoConhecimento, cc.NivelConhecimento,
COUNT(DISTINCT(cc.id)) as Qtde
from tabelaConhecimento cc
inner join tabelaCadastro cv on cv.Id = cc.id
group by cc.CampoConhecimento,cc. NivelConhecimento
order by cc.CampoConhecimento asc
CampoConhecimento NivelConhecimento Qtde
Access 1 29799
Access 2 7951
Access 3 2014
Eu gostaria que o resutado fosse assim:
CampoConhecimento QtdeNivelConhecimento1 QtdeNivelConhecimento2 QtdeNivelConhecimento3
Access 29799 7951 2014
tem como?
Consegui assim:
select distinct(cc.CampoConhecimento),
count(CASE WHEN cc.NivelConhecimento = 1 THEN 'NivelConhecimento1' ELSE NULL END) as NivelConhecimento1,
count(CASE WHEN cc.NivelConhecimento = 2 THEN 'NivelConhecimento2' ELSE NULL END) as NivelConhecimento2,
count(CASE WHEN cc.NivelConhecimento = 3 THEN 'NivelConhecimento3' ELSE NULL END) as NivelConhecimento3
from tabelaConhecimento cc
inner join tabelaCadastro cv on cv.Id = cc.id
group by cc.CampoConhecimento
mas não sei por que as vezes da Incorrect syntax near ' '
>
Em 31/10/2017 at 14:55, ndias disse:
Consegui assim:
select distinct(cc.CampoConhecimento),
count(CASE WHEN cc.NivelConhecimento = 1 THEN 'NivelConhecimento1' ELSE NULL END) as NivelConhecimento1,
count(CASE WHEN cc.NivelConhecimento = 2 THEN 'NivelConhecimento2' ELSE NULL END) as NivelConhecimento2,
count(CASE WHEN cc.NivelConhecimento = 3 THEN 'NivelConhecimento3' ELSE NULL END) as NivelConhecimento3
from tabelaConhecimento cc
inner join tabelaCadastro cv on cv.Id = cc.id
group by cc.CampoConhecimento
mas não sei por que as vezes da Incorrect syntax near ' '
Acredito que seja o distinct, não é necessária já que o group by fará isso.
select cc.CampoConhecimento,
count(CASE WHEN cc.NivelConhecimento = 1 THEN 'NivelConhecimento1' ELSE NULL END) as NivelConhecimento1,
count(CASE WHEN cc.NivelConhecimento = 2 THEN 'NivelConhecimento2' ELSE NULL END) as NivelConhecimento2,
count(CASE WHEN cc.NivelConhecimento = 3 THEN 'NivelConhecimento3' ELSE NULL END) as NivelConhecimento3
from tabelaConhecimento cc
inner join tabelaCadastro cv on cv.Id = cc.id
group by cc.CampoConhecimento
A instrução que procuras chama-se PIVOT.
Vê se estes links ajudam.