Array
(
)

Sql Muito estranho...Union ?????

Mmbarros
   - 04 ago 2004

PESSOAL ,

Boa Tarde!
Estou tentando contar quantos funcionários estão suspensos e quantos não estão suspensos. E para isso executo um Sql utilizando o Union All, porém ele só me retorna os valores do 1º Sql. alguém poderia me ajudar.
Agradeço desde já.

Obs: A consulta é em uma mesma tabela

Segue abaixo a estrutura da tabela:

FUNCIONARIO

CPF,
SETOR,
NOME,
DATANASCIMENTO,
SUSPENSO

Segue abeixo o Sql utilizado:

SELECT SETOR, COUNT(*) as SUSPENSO FROM FUNCIONARIO
WHERE SUSPENSAO = ´S´
group by SETOR
union ALL
SELECT CODSETOR, COUNT(*) as NAOSUSPENSO FROM FUNCIONARIO
WHERE SUSPENSAO = ´N´
group by CODSETOR


Paulo_amorim
   - 05 ago 2004

Olá

Imaigno que na segunda query, onde vc coloca

Citação:
SELECT CODSETOR

você tenha querido dizer SETOR, não? Talvez tenha isso

Fora isso, tente colocar um campo IND_STATUS, que preenche ´S´ na primeira query e ´N´ na segunda... talvez ajude (se bem q tem Union ALL ne...seila)

Espero que ajude

Até+


Emiliano
   - 05 ago 2004

Caro amigo,


Se vc quer saber a quantidade de suspenso e não suspensos por setor é so executar o seguinte SQL:

SELECT SETOR, SUSPENSO, Count(SUSPENSO) AS QTD_POR_SETOR
FROM FUNCIONARIO
GROUP BY SETOR, SUSPENSO;

Agora, se vc quiser saber a quantidade total de suspesos e não suspensos é so executar o seguinte:

SELECT SUSPENSO, COUNT(SUSPENSO) AS QTD_SUSPENSOS_NSUSPENSOS
FROM FUNCIONARIO
GROUP BY SUSPENSO;

UNION ALL é utilizado para união de duas tabelas.


Emiliano,

t+


Emerson
   - 05 ago 2004

ou ainda:

todos os suspensos e não-suspensos por setor:
SELECT Func.Setor, count(setor) Total,
    (select count(setor)
      from Funcionario where Setor=Func.Setor and Suspenso=´N´) Ativos,
    (select count(setor)
      from Funcionario where Setor=Func.Setor and Suspenso=´S´) Suspensos
From Funcionario Func
Group by Func.Setor

Retorno:
Setor   Total   Ativos   Suspensos
X         6         6           0
Y         19       14         5
Z         8         7           1



todos os funcionários suspensos e não suspensos:
SELECT count(setor) Total,
    (select count(setor) from Funcionario where Suspenso=´N´) Ativos,
    (select count(setor) from Funcionario where Suspenso=´S´) Suspensos
From Funcionario Func

Retorno:
Total   Ativos   Suspensos
33       27         6


Mmbarros
   - 05 ago 2004

Grande Emerson.en

Fico grato pela sua ajuda, ficou perfeito!
Mais uma vez muito obrigado!