Maison >base de données >tutoriel mysql >Comment répliquer les fonctionnalités LEAD et LAG dans SQL Server 2008 ?
Alternative à la fonction LEAD LAG dans SQL Server 2008
Dans SQL Server 2008, l'incapacité d'utiliser les fonctions LEAD et LAG pose des problèmes lors de la comparaison lignes actuelles avec les valeurs des lignes suivantes. Cet article explore une méthode alternative pour les utilisateurs de SQL Server 2008 qui ont besoin de cette fonctionnalité.
Interrogation des lignes suivantes et précédentes
L'objectif est d'isoler les lignes où se trouve la ligne actuelle. StatusId est 1 et le StatusId de la ligne suivante est 6, les deux lignes ayant le même horodatage des minutes. Puisque les fonctions LEAD et LAG ne sont pas disponibles, nous pouvons utiliser une auto-jointure.
Approche d'auto-jointure
La requête suivante établit une jointure entre la table (appelée comme t) et un tableau « ligne suivante » (appelé tnext). Les conditions de jointure incluent :
Requête pour une correspondance précise des minutes
Si une correspondance précise des minutes est requise au lieu d'une simple proximité dans la minute, la requête peut être modifiée pour inclure la condition datepart(minute, t.MinStartTime) = datepart(minute, tnext.MinStartTime).
Exemple de requête
En utilisant la table fournie comme exemple, voici les deux versions de la requête :
Version 1 (en une minute proximité):
select t.* from table t join table tnext on t.id = tnext.id - 1 and t.StatusId = 1 and tnext.StatusId = 6 and datediff(second, t.MinStartTime, tnext.MinStartTime) < 60;
Version 2 (correspondance précise des minutes):
select t.* from table t join table tnext on t.id = tnext.id - 1 and t.StatusId = 1 and tnext.StatusId = 6 and datediff(second, t.MinStartTime, tnext.MinStartTime) < 60 and datepart(minute, t.MinStartTime) = datepart(minute, tnext.MinStartTime);
Sortie
La sortie de ces requêtes récupérera les lignes souhaitées qui satisfont aux critères spécifiés : Id 6, où StatusId vaut 1 et est suivi de un identifiant avec StatusId 6 avec le même horodatage minute (pour la version 2).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!