SQL Partition En Plusieurs Colonnes
J'ai suivantes GPS tableau de rapport :
Je m'attends à un groupe par la Lat, Long et récupérer la séquence de la ressource mouvement :
J'y suis presque avec le code suivant :
;WITH dt AS(
SELECT ROW_NUMBER() OVER (Partition By ROUND(Latitude,2), ROUND(Longitude, 2), DATEPART(hh,[GPS Time]) ORDER BY [GPS Time]) AS RowNumber,
ID, ResourceID, Region, [GPS Time], ROUND(Latitude,2) AS Latitude, ROUND(Longitude, 2) AS Longitude
FROM [dbo].[GeofenceReport] WHERE TenantID=2 AND CAST([GPS Time] AS Date) = '2014-02-11' AND ResourceID = 'MH202 (B 9349 OI)'
)
SELECT * FROM dt WHERE RowNumber = 1 ORDER BY [GPS Time]
Mais ce sera un groupe de tous les événement de la ressource. Je veux que ce groupe par la séquence. Donc, si la ressource feuilles emplacement Un - se déplace à l'Emplacement B, puis C, puis Emplacement Un de nouveau.
OriginalL'auteur Randeep Singh | 2014-04-08
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous pouvez le faire à l'aide d'une simple fonction de classement. De la commande par le temps ne vous donne pas le groupe souhaité id en lat/lon et de commande par géo-localisation n'a pas beaucoup de sens. Ce serait le travail est de créer un drapeau dire si lat/lon changé et en utilisant la somme de ce que la séquence/id de groupe. Ensuite, vous pouvez les regrouper par que pour obtenir vos résultats.
Mise à jour de votre SQL violon
OriginalL'auteur TomT