La fonction LAG dans SQL Server est une fonction Windows introduite dans SQL Server 2012. Cette fonction vous permet de récupérer les données des lignes précédentes selon la valeur de décalage spécifiée. Considérez la fonction de décalage comme la possibilité d'accéder aux données des lignes précédentes à partir de la ligne actuelle.
Par exemple, à partir de la ligne actuelle, vous pouvez accéder à la ligne précédente, qui devient la ligne actuelle, et vous pouvez accéder à la ligne précédente, et ainsi de suite.
Dans cet article, nous apprendrons à utiliser la fonction LAG dans SQL Server en utilisant divers exemples.
Fonction SQL Server LAG ()
Nous exprimons la syntaxe de la fonction comme:
LAG (Expression, Offset [, par défaut])Paramètres de fonction et valeur de retour
Dans la syntaxe ci-dessus, nous avons les paramètres suivants:
La fonction renvoie le type de données de l'expression scalaire.
Exemples de décalage SQL Server
Examinons un exemple pratique pour mieux comprendre comment utiliser la fonction de décalage. Commençons par ajouter des exemples de données comme indiqué:
Créer la base de données SampledB;L'ensemble de requête ci-dessus doit renvoyer les données comme:
Exécutez la fonction LAG sur la colonne DBName comme indiqué dans l'exemple de requête ci-dessous:
SELECT *, LAG (DBNAME, 1) Over (Ordre by dbname) comme précédemment_db à partir de lag_func;La requête ci-dessus renvoie une sortie comme suit:
Remarquez, la première ligne contient une valeur nulle, car elle n'a pas de valeur antérieure.
Exemple 2:
Au lieu d'obtenir une valeur nulle où la ligne ne contient pas de ligne précédente, nous pouvons définir une valeur par défaut, comme indiqué dans l'exemple de requête ci-dessous:
Sélectionnez Dbname, LAG (DBNAME, 1, «N / A»)La requête ci-dessus renvoie une sortie similaire à celle ci-dessus. Cependant, au lieu de Null, nous obtenons la chaîne spécifiée.
Exemple 3: valeur de décalage personnalisée
Nous pouvons également récupérer les valeurs sur une valeur de décalage personnalisée. Par exemple, pour obtenir la valeur de trois lignes précédentes, nous pouvons utiliser la requête:
Sélectionnez Dbname, LAG (DBNAME, 3, «N / A»)L'exemple de code ci-dessus doit renvoyer le résultat comme:
Ici, les 3 premières colonnes sont nuls car les valeurs de décalage vont au-delà de la portée des lignes disponibles.
Exemple 4: partition par
Nous pouvons créer des partitions logiques des données connexes à l'aide de la clause Partition by. Nous pouvons alors appliquer la fonction de décalage à chaque partition.
Considérez l'exemple ci-dessous:
Sélectionnez dbname, paradigm, lag (dbname, 1, 'n / a')La requête ci-dessus renvoie un exemple de requête en tant que:
La requête crée 6 partitions basées sur le paradigme dans le résultat ci-dessus. Sur chaque partition, la fonction de décalage récupère la ligne précédente.
Conclusion
Cet article vous a appris à utiliser la fonction SQL Server Lag pour récupérer la ligne précédente à partir d'un ensemble résultant.
Merci pour la lecture!