Erro no Union ALL ?????

Firebird

05/08/2004

PESSOAL ,

Bom Dia!
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 SETOR, COUNT(*) as NAOSUSPENSO FROM FUNCIONARIO
WHERE SUSPENSAO = ´N´
group by SETOR


Mmbarros

Mmbarros

Curtidas 0

Respostas

Afarias

Afarias

05/08/2004

vc não pode ter nomes diferentes para a mesma coluna!! mesmo em um UNION ele vai adotar apenas o 1 dos nomes (o primeiro) -- deve ser isso q vc está observando!

acho q sua consulta seria melhor (e mais otimizada) na forma::

SELECT SETOR, SUSPENSAO, COUNT(*) AS QTDE FROM FUNCIONARIO
group by SETOR, SUSPENSAO


ou vc teria de fazer algo como::

SELECT SETOR, COUNT(*) as QTDE, cast(´SUSPENSOS´ as varchar(10)) AS SITUACAO
FROM FUNCIONARIO WHERE SUSPENSAO = ´S´
group by SETOR
UNION ALL
SELECT SETOR, COUNT(*), cast(´ATIVOS´ as varchar(10))
FROM FUNCIONARIO WHERE SUSPENSAO = ´N´
group by SETOR


T+


GOSTEI 0
Mmbarros

Mmbarros

05/08/2004

Caro Afarias,

Fico grato pela sua juda... conseguí também esta forma (ver abaixo) com nossos amigos do Grupo. Vou dar uma olhada e verificar qual atendera o requisito.de qualquer forma agradeço mais uma vez.
Valeu!


[color=black:e03d560fb2]todos os suspensos e não-suspensos por setor: [/color:e03d560fb2]

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

[color=black:e03d560fb2]Retorno:[/color:e03d560fb2]
Setor Total Ativos Suspensos
X 6 6 0
Y 19 14 5
Z 8 7 1


GOSTEI 0
Afarias

Afarias

05/08/2004

tb funciona, mas é mais pesado...



T+


GOSTEI 0
POSTAR