Maison >base de données >tutoriel mysql >Comment comparer les lignes adjacentes dans SQL Server 2008 sans LEAD ni LAG ?
Alternatives aux fonctions LEAD et LAG dans SQL Server 2008
Problème :
SQL Server 2008 ne prend pas en charge les fonctions LEAD et LAG. Vous devez déterminer comment comparer la ligne actuelle avec la valeur de la ligne suivante.
Solution :
Une alternative consiste à effectuer une auto-jointure :
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;
Cette requête renverra les lignes où le statut de la ligne actuelle est 1, le statut de la ligne suivante est 6 et la différence de temps entre les deux lignes est moins de 60 secondes.
Si vous avez besoin d'une correspondance exacte à la minute, vous pouvez modifier la requête :
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);
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!