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
Curtir tópico
+ 0
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
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!
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
Clique aqui para fazer login e interagir na Comunidade :)