Select do pós-anterior como fazer?

29/03/2011

0

Uso sql Server 2005. Tenho em uma tabela um campo data e hora. Preciso fazer assim: Um somatório sempre do registro(campo datahora) posterior - menos o anterior, tipo assim:   ID    NOME         DATA ------------------------------------------------------ 1     José            2011-02-24 11:26:38.000 2     José            2011-02-24 11:26:45.000 3     José            2011-02-24 11:26:47.000   Preciso fazer com que o primeiro registro de minha query tenha um somatório de 7 segundos, que é a subtração de (2011-02-24 11:26:45.000 - 2011-02-24 11:26:38.000) e o próximo registro dar um total de 2 segundos que é a mesma regra e assim até terminar os registros. Não me pergunte para que essa babaquice, pois é coisa de Gerente de Projetos. Eu apenas faço o que mandam e nada mais.  
Pjava

Pjava

Responder

Posts

29/03/2011

Pjava

Resolvi assim. É só substituir pela sua tabela e seus devidos campos:   SELECT ID, Nome, Data,
DATEDIFF(ss,(SELECT TOP (1) Data FROM @t As TInt WHERE TInt.Nome = TOut.Nome
AND TInt.DATA < TOut.DATA ORDER BY Data DESC),Data) As Dif,
DATEDIFF(ss,(SELECT TOP (1) Data FROM @t As TInt WHERE TInt.Nome = TOut.Nome
AND TInt.DATA <= TOut.DATA ORDER BY Data ASC),Data) As Acumulado
FROM @t As TOut
ORDER BY ID
Responder

19/04/2011

Gustavo Bretas

Cara, ao invés de tratar isso no select, vc ja pensou em criar um segundo campo para guardar a data que vc precisa subtrair?
Eu digo pq fiz uma rotina com o mesmo objetivo a pouco dias, e a performance usando select foi MUITO baixa.
Talvez não seja a solução mais correta, mas se vc gravar as duas datas garanto que vai "sofrer" menos, e olha que nem é um POG muito descarado... rs!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar