Pegar a data mais atual
11/10/2011
0
To com uma duvida aqui.
Tenho as seguintes tabelas:
FLP_FUNCIONARIOS
- CodIntFunc
- NomeFunc
- ChapaFunc
FLP_FUNCAO
- CodFuncao
- DescFuncao
FLP_HISTORICOSALARIAL
- CodIntFunc
- CodFuncao
- DTHIST
---------------------------------------------
Preciso puxar o nome do funcionario e sua respectiva função atual.
Escrevi o seguinte codigo:
select f.codintfunc CODIGO, f.chapafunc CHAPA, f.nomefunc NOME, fu.descfuncao FUNCAO, max(h.dthistsal) DATA from flp_historicosalarial h, flp_funcionarios f, flp_funcao fu where h.codintfunc = f.codintfunc and h.codfuncao = fu.codfuncao Group By f.codintfunc, f.chapafunc, f.nomefunc, fu.descfuncao, h.dthistsal
Bom, sabendo que o funcionario pode mudar de função com o decorrer do tempo, ou seja, na tabela FLP_HISTORICOSALARIAL, podemos ter uma linha com o mesmo CodIntFunc, mas o CodFuncao diferente.
Aconteceu que para os funcionários que trocaram de função ao longo do tempo, criaram - se linhas repetidas com os nomes deles e as diferentes funções exemplo:
Codigo Chapa Nome Função Data
229 008074 ELIAS FRANCISCO SOARES MOTORISTA 01/05/2011
229 008074 ELIAS FRANCISCO SOARES MOT TRAINEE 01/05/2008
229 008074 ELIAS FRANCISCO SOARES COBRADOR (A) 02/08/2006
229 008074 ELIAS FRANCISCO SOARES MOTORISTA LEVE 04/05/2009
Pergunta: Como conseguir pegar apenas a ultima função que este funcionario ocupou?
Atenciosamente,
Flavio Silva
Posts
11/10/2011
Edgard Leal
f.chapafunc CHAPA,
f.nomefunc NOME,
fu.descfuncao FUNCAO,
max(h.dthistsal) DATA
from flp_historicosalarial h,
flp_funcionarios f,
flp_funcao fu
where h.codintfunc = f.codintfunc
and h.codfuncao = fu.codfuncao
Group By f.codintfunc,
f.chapafunc,
f.nomefunc,
fu.descfuncao,
h.dthistsal
13/10/2011
Flavio Silva
select f.codintfunc CODIGO, f.chapafunc CHAPA, f.nomefunc NOME, hist1.descfuncao FUNCAO, max(h.dthistsal) DATA from flp_historicosalarial h, (select fu.descfuncao, fu.codfuncao from flp_funcao fu, flp_historicosalarial h1 where fu.codfuncao = h1.codfuncao) hist1, flp_funcionarios f where h.codintfunc = f.codintfunc and h.codfuncao = hist1.codfuncao and f.codigoempresa = 1 and f.codigofl = 1 Group By f.codintfunc, f.chapafunc, hist1.descfuncao, f.nomefunc -- h.dthistsal
13/10/2011
Emerson Nascimento
select
f.codintfunc CODIGO,
f.chapafunc CHAPA,
f.nomefunc NOME,
fu.descfuncao FUNCAO,
h.dthistsal DATA
from
flp_funcionarios f
inner join
flp_historicosalarial h on h.codintfunc = f.codintfunc
inner join
flp_funcao fu on fu.codfuncao = h.codfuncao
where
h.dthistsal = (select max(h2.dthistsal) from flp_historicosalarial h2
where h2.codintfunc = h.codintfunc)
Clique aqui para fazer login e interagir na Comunidade :)