Calcular diff entre campos de linhas diferentes

Pessoal, tudo bem?

Antes de tudo não sou um expert em queries e sim um “curioso” que aprendeu até certo nível que nem eu sei rs.

Vamos lá, vejam se podem me ajudar e ficarei imensamente grato.

Tenho um banco de dados que possui dados de eventos de entrada e saída de funcionários.

quando o funcionario X entra, um id de registro é criado e vai para tabela de registro_entrada

quando o funcionario x sai, um novo id de registro é criado e vai para a tabela de registro_saida.

São obviamente tabelas diferentes.

quando faço o select, geram 2 linhas.

Como consigo subtrair a data/hora de saida da entrada, para obter a “duração” da estadia do funcionario?

Não consigo usar a função timediff pois consegui apenas relacionar a “data” atual e não a data original da entrada.

abaixo um resumo…

SELECT * from e.entrada

INNER JOIN functions f ON ( f.funcionarioid = e.funcionarioid)
INNER JOIN functions s ON ( s.funcionarioid = f.funcionarioid)
where f.funcionarioid = 101
(SELECT TIMEDIFF (e.entradaid,s.saidaid)) AS DURACAO

O resultado são 2 linhas por exemplo, então o que preciso é ter a duração com base na entrada e saida, que estão em linhas diferentes…

Enfim, é isso… muito grato desde já!

SELECT DATEDIFF(hour, res.data_saida, res.data_entrada)
FROM
(SELECT e.coluna_que_registra_data_hora_entrada as data_entrada FROM registro_entrada e
INNER JOIN s.coluna_que_registra_data_hora_saida as data_saida FROM registro_saida s
ON e.funcionarioid = s.funcionarioid WHERE e.funcionarioid = ?) res;

Creio que algo assim possa ajudar.

opa Darlan, show cara, vou testar !!! obrigado e retorno com o resultado…
abs