Penultimo Registro de uma Tabela

11/09/2012

0

Pessoal, tenho uma tabela que se chama PFHSTFER , nela existe o historio de férias do funcionario. e existem varios registros tendo em vista um funcionario que foi admitido a mais de 5 anos, teremos mais de 3 linhas.

Eu preciso retornar a penultima linha desta tabela para comparar com a ultima.... pois um funcionario pode tirar ferias de 15 dias primeiro e depois mais 15.

Segue minha consulta que retorna a ultima linha, queria adaptar a mesma para ter mais duas colunas INICIO_ANTERIOR e FIM_ANTERIOR

SELECT PFUNC.CHAPA,PFUNC.NOME, MAX(CONVERT(VARCHAR,PFHSTFER.DTFIMPERAQUIS,103))FIM_PER,CONVERT(VARCHAR,PFUNC.DTVENCFERIAS,103)VENC,
CASE WHEN MAX(PFHSTFER.DTFIMPERAQUIS) <> PFUNC.DTVENCFERIAS THEN 'FALSE' ELSE 'TRUE' END VENC_FIM,DATEDIFF(DAY,MAX(PFHSTFER.DTINIPERAQUIS),MAX(PFHSTFER.DTFIMPERAQUIS)) DIAS_AQUIS
FROM PFUNC 
JOIN PFHSTFER ON
PFUNC.CHAPA=PFHSTFER.CHAPA AND
PFHSTFER.CODCOLIGADA=PFUNC.CODCOLIGADA
WHERE PFUNC.CODSITUACAO <>'D'  AND PFUNC.CODCOLIGADA=4
GROUP BY PFUNC.CHAPA,PFUNC.NOME,PFUNC.DTVENCFERIAS




Alguém consegue me ajudar?

Felipe Helison

Felipe Helison

Responder

Posts

12/09/2012

Alex Lekao

Ola Felipe, bom dia!!!

voce pode fazer uma subselect e utilizar o top 1 com order by desc e uma condicional entre essa subselect e a select principal, e mais uma condicional as datas desta subselect tem que ser menores que as datas da select principal.

Houve uma discursao parecida com essa a uns topicos anteriores, mas era referente a penultima venda, o principio eh o mesmo.

vou colar o topido e de uma olhada caso tenha algum problema da um toque.

abraco.

Alex - Lekao

https://www.devmedia.com.br/forum/retornar-penultima-compra-do-cliente/423046
Responder

14/09/2012

Bruno Leandro

Ola Felipe deu certo a solução proposta?

caso ainda nao tenha dado certo tente algo assim

select top 1 a.*
from tabela a
where a.data <> (select top 1 x.data from tabela x where x.id_tabela = a.id_tabela order by x.data desc )
order by a.data desc
Responder

15/09/2012

Felipe Helison

Olá! Deu certo sim cara! Muito obrigado pela ajuda.

Ola Felipe, bom dia!!!

voce pode fazer uma subselect e utilizar o top 1 com order by desc e uma condicional entre essa subselect e a select principal, e mais uma condicional as datas desta subselect tem que ser menores que as datas da select principal.

Houve uma discursao parecida com essa a uns topicos anteriores, mas era referente a penultima venda, o principio eh o mesmo.

vou colar o topido e de uma olhada caso tenha algum problema da um toque.

abraco.

Alex - Lekao

https://www.devmedia.com.br/forum/retornar-penultima-compra-do-cliente/423046
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar