Array
(
)

Penultimo Registro de uma Tabela

Felipe Helison
   - 11 set 2012

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
#Código

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?

Alex Lekao
   - 12 set 2012

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

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

Bruno Leandro
   - 14 set 2012

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

Felipe Helison
   - 15 set 2012

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

Citação:
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

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