Bom dia rhicky, tudo bem ???
Cara, eu consigo ti ajudar explicando o que cada função do SQL Server faz... A partir dai, tem que pegar a função equivalente no Oracle.
Aqui ele está convertendo a coluna para um formato de data especifico (103), de cabeça não lembro que formato é, mas seria no Oracle o to_date(h.dtmudanca, 'dd/mm/rrrr')
Selecionar tudo
lead(convert(varchar(10), h.dtmudanca, 103), 1 , 'atual') over(order by h.dtmudanca)
Lead over tem no Oracle também... Acho melhor do que eu explicar aqui, você dar uma procurada em funções analíticas aqui no fórum ou na internet mesmo. Eu acredito que a função no SQL Server, tem o mesmo sentido que a função do Oracle está...
Esse daqui nada mais é do que o simples data1 - data2
E o inner join só muda a forma de fazer.... No Oracle nós usamos o sinal de igual, e quando precisamos fazer um left, right ou qualquer outro tipo de join, usamos o (+), dependendo do lado do "="
beleza ??? Acho que já é um caminho !!!
Re: Retornar tempo de acordo com data de mudança em cada reg
Enviado: Ter, 05 Out 2021 11:32 am
por rhicky
Olá Thiago, tudo bem?
Você tem um tel/zap para contato?
Consegue me ajudar na conversão da consulta sql abaixo para oracle?
Selecionar tudo
SELECT
(F.CHAPA+' - '+F.NOME) AS 'FUNCIONARIO',
(FN.CODIGO+' - '+FN.NOME) AS 'FUNCAO',
CONVERT(VARCHAR(10), H.DTMUDANCA, 103) AS 'INICIO',
LEAD(CONVERT(VARCHAR(10), H.DTMUDANCA, 103), 1 , 'ATUAL')
OVER(ORDER BY H.DTMUDANCA) AS 'FIM',
DATEDIFF(MM, H.DTMUDANCA,
LEAD(H.DTMUDANCA, 1 , GETDATE())
OVER(ORDER BY H.DTMUDANCA)) AS DIFF
FROM PFUNC F WITH(NOLOCK)
INNER JOIN PFHSTFCO H WITH(NOLOCK)
ON H.CODCOLIGADA = F.CODCOLIGADA
AND H.CHAPA = F.CHAPA
INNER JOIN PFUNCAO FN WITH(NOLOCK)
ON FN.CODCOLIGADA = H.CODCOLIGADA
AND FN.CODIGO = H.CODFUNCAO
WHERE F.CODCOLIGADA = 1
AND F.CHAPA = '01018379'
AND H.DTMUDANCA BETWEEN '' AND ''
ORDER BY H.DTMUDANCA ASC