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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar