Converter consulta SQL para Oracle

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
rhicky
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 58
Registrado em: Sex, 20 Jul 2007 9:48 am
Localização: S. J. do Rio Preto/SP
Rhicky

Amigos,
Alguém pode me ajudar a converter a consulta SQL 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
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Respondido na MP que você me enviou !!!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Olá Tiago
Manda a resposta aqui no tópico, daí fica disponível pra comunidade. (A não ser que isso seja algo confidencial).
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

dr_gori escreveu:
Qua, 13 Out 2021 11:43 am
Olá Tiago
Manda a resposta aqui no tópico, daí fica disponível pra comunidade. (A não ser que isso seja algo confidencial).
Claro dr_gori,

Segue a resposta que dei via MP
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.

Selecionar tudo

convert(varchar(10), h.dtmudanca, 103)
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

Selecionar tudo

inner join
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
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 35 visitantes