Bom dia pessoal.
Vamos imaginar o seguinte cenário:
Uma tabela com registros de reclamações e pra simplificar com colunas data, idReclamante.
Preciso controlar se há um período minimo entre as reclamações para ter noção de solução.
Tenho que identificar se existe reclamações do mesmo reclamante no período <= a 1 hora entre as reclamações. Ex.
id | idreclamante | data
1 100 20/04/2020 10:00
2 100 20/04/2020 10:30
3 100 20/04/2020 12:00
4 200 20/04/2020 09:00
5 200 20/04/2020 12:00
Fazendo um select nesta tabela, teria que trazer como resultado somente as 2 primeiras linhas.
Acredito que tenha transformar linhas em colunas mas deu uma bugada na lógica aqui....
Alguém tem o caminho das pedras?
Obrigado t+
Achar diferença entre datas e usando pivot
- dr_gori
- Moderador
- Mensagens: 5013
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Acho que você pode usar ANALYTIC FUNCTIONS pra isso.
Mais precisamente LEAD and LAG.
Veja esse exemplo:
Repare que ele pega o valor da linha ANTERIOR. (950, 800). (1300, 950), etc.
Ou seja, basta você pegar a diferença desses dois valores.
E depois filtrar quando a diferença for menor que 1 hora.
Mais precisamente LEAD and LAG.
Veja esse exemplo:
SELECT ename,hiredate,sal,
LAG(sal, 1, 0)
OVER (ORDER BY hiredate) AS PrevSal
FROM emp
WHERE job = 'CLERK';
Ename Hired SAL PREVSAL
------ --------- ----- -------
SMITH 17-DEC-80 800 0
JAMES 03-DEC-81 950 800
MILLER 23-JAN-82 1300 950
ADAMS 12-JAN-83 1100 1300
Ou seja, basta você pegar a diferença desses dois valores.
E depois filtrar quando a diferença for menor que 1 hora.
Perfeito, vou testar.
Obrigado pelo retorno
Obrigado pelo retorno
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 21 visitantes