Usuário com melhor resposta
Count no Case

Pergunta
-
Amigos boa tarde
Preciso fazer um COUNT por situacao dos funcionarios, porem nao estou conseguindo dessa forma;
SQL
SELECT CODSITUACAO FROM PFUNC WHERE CODCOLIGADA = '9'
Resultado
A 33333333
A 33344444
D 55555555
Resultado Esperado
Ativos = 2
Demitidos = 1
Estou fazendo dessa forma
SELECT
COUNT(CASE WHEN CODSITUACAO = 'A' THEN 'Ativos' ELSE chapa END) AS 'ATIVOS'
FROM PFUNC
WHERE
CODSITUACAO IN ( 'A')
AND
CODCOLIGADA = '9'Porem eu preciso de mais condições na SQL, ai eu tentei dessa forma
SELECT
(F.AFASTADOPREV),
(F.ATIVOS)
FROM
(
SELECT
COUNT(CASE WHEN CODSITUACAO = 'P' THEN 'Afastado Previdencia' ELSE chapa END) AS 'AFASTADOPREV',
0 ATIVOS
FROM PFUNC
WHERE
CODSITUACAO IN ( 'P')
AND
CODCOLIGADA = '9'
UNION ALL
SELECT
0 AS AFASTADOPREV,
COUNT(CASE WHEN CODSITUACAO = 'A' THEN 'Ativos' ELSE chapa END) AS 'ATIVOS'
FROM PFUNC
WHERE
CODSITUACAO IN ( 'A')
AND
CODCOLIGADA = '9'
)
F(AFASTADOPREV,ATIVOS)Nao Agrupa
Afastado Ativos
21 0
0 344Resultado esperado
Afastado Ativos
21 344
Essa foi a forma que encontrei, porem se tiver outra melhor ainda.
Obrigado
Respostas
-
Boa noite,
Ronnie, segue uma outra sugestão para teste:
SELECT COUNT(CASE WHEN CODSITUACAO = 'P' THEN chapa END) AS AFASTADOPREV, COUNT(CASE WHEN CODSITUACAO = 'A' THEN chapa END) AS ATIVOS FROM PFUNC WHERE CODCOLIGADA = '9' AND CODSITUACAO IN ('P', 'A')
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 18 de outubro de 2016 13:45
- Marcado como Resposta Ronnie Von terça-feira, 18 de outubro de 2016 13:53
Todas as Respostas
-
Para sua query inicial
Resultado
A 33333333
A 33344444
D 55555555
Resultado Esperado
Ativos = 2
Demitidos = 1
de uma forma simples isso resolve ??
SELECT CASE WHEN X.CODSITUACAO = 'A' THEN 'Ativo' ELSE 'Demitido' END AS Estatus , X.Quantidade FROM ( SELECT P.CODSITUACAO , COUNT(P.CODSITUACAO) AS Quantidade FROM dbo.PFUNC AS P GROUP BY P.CODSITUACAO ) AS X;
Wesley Neves
- Sugerido como Resposta Wesley Neves segunda-feira, 17 de outubro de 2016 17:44
- Editado Wesley Neves segunda-feira, 17 de outubro de 2016 17:45 complemento
- Não Sugerido como Resposta Wesley Neves terça-feira, 18 de outubro de 2016 14:00
-
Boa noite,
Ronnie, segue uma outra sugestão para teste:
SELECT COUNT(CASE WHEN CODSITUACAO = 'P' THEN chapa END) AS AFASTADOPREV, COUNT(CASE WHEN CODSITUACAO = 'A' THEN chapa END) AS ATIVOS FROM PFUNC WHERE CODCOLIGADA = '9' AND CODSITUACAO IN ('P', 'A')
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 18 de outubro de 2016 13:45
- Marcado como Resposta Ronnie Von terça-feira, 18 de outubro de 2016 13:53
-