Usuário com melhor resposta
Menor intervalo de tempo (mesmo campo de data/hora)

Pergunta
-
Srs, preciso de um Help monstro. Não sei como fazer tal query no SQL Server.
Tenho ID_ATENDIMENTO(campo: PatientId) e Data/Hora de Medição de pacientes (Campo: TestDateTime) - (pode haver várias medições p/ este paciente). Quando a medição em um paciente for feita num intervalo menor que 5 minutos, devo considerar somente a última. Não posso usar o Max na data, pois isso traria somente 1 registro para a mesma data/hora e na verdade preciso de todas as medições daquele paciente, porém desconsiderar medições foi feita num intervalo menor que 5 minutos. Se o paciente teve várias medições no mesmo dia, isso deve ser considerado sim, porém eliminar o registro onde na mesma data, o tempo foi menor q 5 minutos.
Tenho o seguinte resultado:
No exemplo acima, no dia 01/10/2017 o paciente teve 2 medições no intervalo menor que 5 minutos (dados em destaque) e neste dia precisa manter somente a última medição, ou seja, a que ocorreu as 12:34:12. Eu também não posso transformar essas linhas em colunas, pois há pacientes que são feitas mais de mil medições, ou seja, é inviável transformar linhas em colunas.
Preciso que traga todas as medições do paciente (Campo: TestDateTime) porém desconsiderar o registro onde, no mesmo dia, há medições num intervalo menor que 5 minutos, ou seja, comparar data/hora no mesmo campo.
Alguém sabe como faria essa query?
Obrigada
Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 4 de novembro de 2017 12:07
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
Todas as Respostas
-
Boa tarde,
Lúcia, qual versão do SQL Server você está utilizando?
O intervalo mínimo seria de 5 minutos ou de 5 horas? Porque no exemplo em destaque o intervalo é maior que 5 minutos.
Considerando que seja de 5 minutos, como deveria ficar o resultado com as medições abaixo?
- 8:18
- 8:22
- 8:26
- 8:32
- 8:36
Assinatura: http://www.imoveisemexposicao.com.br
-
Sim, infeliszmante acabei colocando o exemplo errado (onde mostra um intervalo no mesmo dia maior que 5 minutos), mas o que preciso é isso mesmo que coloquei.
Quando, na mesma data, for feito uma medição no paciente onde o intervalo entre as medições seja MENOR QUE 5 MINUTOS, deve-se descartar a primeira medição e ficar somente com a última.
Mas o intervalo é de 5 MINUTOS
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 4 de novembro de 2017 12:07
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
-
Olá
1. Se forem no mesmo dia e uma medição na sequencia da outra, pego somente a última. No exemplo acima deveria permanecer 08:16. (Isso acontece quando a medição do paciente está muito baixa, então se refaz o teste p/ ter certeza do valor).
2. Entrei no site da MicroSoft e baixei o SQL Server Management Studio. ultima versão (acredito que seja 2017)
3. Na verdade é somente o campo: TestDateTime. Os outros campos (Hr_Medicao_glic e Dt_medicao_gli) eu usei um convert para separar data da hora, mas sim, tenho todas as informações de data/hora no campo TestDateTime.
-
-
Olá José, boa tarde
Sobre a Versão do Banco de Dados
Executei o comando PRINT @@version e trouxe o seguinte resultado:
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
Jul 9 2008 14:43:34
Copyright (c) 1988-2008 Microsoft Corporation
Standard Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2) (VM)
Sobre a query
Executei a query que você colocou e realmente funcionou exatamente conforme eu precisava, porém não estou conseguindo adaptar na query que eu fiz pelo fato de vocês usarem esse comando With...Go (que na verdade não conheço).
Minha query é simples como segue:
SELECT
t1.PatientId,
PatientName,
TestDescription,
TestDateTime,
GlucoseResult,
.
.
Vários outros campos
FROM
tbMedicao
INNER JOIN
Tabela 2
LEFT JOIN
Tabela 3
outros joins simples
where PatientId Is Not Null ;
;
Nada diferente disso. Como eu encaixo esse comando with….go na minha query?
Eu entendo que deveria adaptar isso na minha query, mas não com esse comando with....go, correto? Seria com uma subquery?
Se puder me ajudar com isso, agradeço imanesamente. Falta muito pouco para conseguir finalizar isso.
Deu pra perceber que sou bem novata em sql né
Mais uma vez, obrigada
-
-
Olá José, boa noite
Só tenho a agradecer. Deu tudo certo sim, conforme eu esperava.
Apenas respondendo o que você perguntou, a tabela de medições tem aproximadamente 1.096.473 linhas.
E a chave primária pki4Test (tabela de testes).
Obrigada pela ajuda
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
-
-
Boa tarde, LúciaFialho.
Fez o teste? Conseguiu o que precisava?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
- Não Marcado como Resposta Filipe B CastroModerator segunda-feira, 20 de novembro de 2017 12:49
-
Bom dia,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.Atenciosamente,
Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.