Forse ho risolto in questo modo:
Select ID,DataAtt,DataPrec,(DataAtt - DataPrec)*24*60 DiffMinuti,Rank From
(
Select T.ID, T.Data DataAtt,
(Select MAX(T1.Data) From Tabella T1 WHERE T.ID = T1.ID AND T.Data > T1.Data) DataPrec, Rank()
over (partition by T.ID Order by T.Data DESC) Rank
FROM Tabella T
)
Where Rank < 60
Order by ID,DataAtt DESC
In pratica prendo per ogni id il MAX della data con data dalla seconda tabella minore della prima (in pratica l'ultima data prima di quella attuale).
Il Rank e il partition by li uso per non prendere TUTTI i record ma solo le ultime 60 letture per ogni ID (10 ore).
Funziona.
Se c'è un metodo migliore e più efficiente, ben venga!!! :D
Grazie
Franco
Assaggiata l'acqua, conosciuta la sorgente