- Este tópico contém 18 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 10 meses atrás por
mpvargas.
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › AJUDA SQL
Pensei em algumas opções pra chegar na solução…
Tenho os campos DEMISSAO (date) e RECNO (number)
Esse RECNO é sequencial
logo…se eu tenho um funcionário que foi demitido, o campo DEMISSAO estará preenchido e eu preciso pegar o RECNO desse funcionario… se o RECNO for igual ao MAX(RECNO) dele, essa é a ultima situação, mas se ele foi re-admitido e está ativo, o RECNO dele é maior que o anterior… com isso eu pegaria a ultima posição nessa situação…
agora o problema é colocar essa situação na view…
@mpvargas
Analisando melhor, para o sistema o CLAUDIO A. VIEIRA trabalhou em diversas filiais sendo admitido e demitidos diversas vezes, repare que cada vez o CLAUDIO teve uma matricula diferente, ou seja, pro sistema são pessoas diferentes, logo a sua consulta não precisa juntar tudo. É questão de interpretação da consulta.
Veja se funciona
SELECT b.filial, b.mat, b.sitfolha, b.admissao, b.cpf, b.rg
FROM
(SELECT MAX(RECNO) "UltRecno", CPF FROM FUNCIONARIOS WHERE SITFOLHA != 'D' GROUP BY CPF) a,
FUNCIONARIOS b
WHERE
A.UltRecno = b.recno
AND a.cpf = b.cpf
AND b.rescrai '31'
AND b.mat between '100000' and '899999'
AND b.demissao > '20100000'
AND b.catfunc IN ('I','J','M');
Olha, pra mim não faz sentido algum você pegar todos que não são DEMITIDOS e no final AND b.demissao > ‘20100000’ , pega todos que são demitidos. Essa view nunca será verdadeira, sempre retornará 0 linhas se por acaso você preencher eventualmente o campo DEMISSAO quando alguem é demitido.
São campos conflitantes:
1) alguem é demitido …
2) seta SITFOLHA = ‘D’
3) seta DEMISSAO = sysdate
Fabio… vc tem razão…
é que eu fui fazendo alterações e esqueci de tirar essa opção que pega somente os demitidos…
na verdade preciso pegar todos, qualquer que seja a situação, sendo que só preciso da ultima situação…
vou testar a query que vc passou
obrigado
› Fóruns › SQL e PL/SQL › AJUDA SQL