Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leonardonobre

Usando HAVING para pegar diferença de datas

Recommended Posts

Bom dia amigos, tudo bem?

 

Uma pequena dica para minha query.

 

Preciso selecionar todos os funcionários com status=5 e com a diferença entre a data de demissão e adminissão inferior ou igual a 5475 dias (15 anos).

 

Só que tenho outras informações para buscar e mostrar nesse relatório.

 

Abaixo um código que esta demorando muito para ser executado.

 

Os campos de data de demissão e admissão são do tipo DATE.

 

SELECT tb_demissao.nome, tb_demissao.pernr, tb_lojas.id_loja, tb_demissao.status, tb_demissao.dtdemi, tb_demissao.dtadmi, tb_demissao.motivo, tb_demissao_motivo.descricao_motivo, tb_cpf.stat2, tb_cpf.pernr, tb_cpf.btrtl, tb_cpf.btrtl, DATEDIFF(tb_demissao.dtdemi,tb_demissao.dtadmi) as Total FROM tb_lojas JOIN tb_cpf ON (tb_lojas.id_loja = tb_cpf.btrtl) JOIN tb_demissao ON (tb_cpf.pernr=tb_demissao.pernr) JOIN tb_demissao_motivo ON (tb_demissao.motivo = tb_demissao_motivo.id_demissao_motivo) GROUP BY tb_cpf.bukrs, tb_demissao.nome, tb_demissao.pernr, tb_lojas.id_loja, tb_demissao.status, tb_demissao.dtdemi, tb_demissao.dtadmi, tb_demissao.motivo, tb_demissao_motivo.descricao_motivo, tb_cpf.stat2, tb_cpf.pernr, tb_cpf.btrtl, tb_cpf.btrtl HAVING Total <= 5475  and tb_demissao.status=5 AND tb_cpf.bukrs = 'LAME' AND tb_cpf.btrtl = '0145'

Se alguém puder dar uma dica, ficaria agradecido.

 

 

Atenciosamente,

Leonardo Fanhoni

Compartilhar este post


Link para o post
Compartilhar em outros sites

Having se aplica como filtro de resultado de função de agrupamento como count() ou sum() e datediff() nao eh funçao de agrupamento

 

sua query seria algo +- assim (sem aquele monte de group by q eu nao entendi pra q ta la)

 

select * from

tb_lojas

JOIN tb_cpf ON (tb_lojas.id_loja = tb_cpf.btrtl)

JOIN tb_demissao ON (tb_cpf.pernr=tb_demissao.pernr)

JOIN tb_demissao_motivo ON (tb_demissao.motivo = tb_demissao_motivo.id_demissao_motivo)

where

DATEDIFF(tb_demissao.dtdemi,tb_demissao.dtadmi) <= 5475 AND

and tb_demissao.status=5 AND

tb_cpf.bukrs = 'LAME' AND

tb_cpf.btrtl = '0145'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.