Erro no Union ALL ?????
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
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
Curtidas 0
Respostas
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+
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
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
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
05/08/2004
tb funciona, mas é mais pesado...
T+
T+
GOSTEI 0