"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Utilisez row_number () pour identifier efficacement les lignes de changement de valeur

Utilisez row_number () pour identifier efficacement les lignes de changement de valeur

Publié le 2025-05-03
Parcourir:569

How to Efficiently Identify Rows with Value Changes Using ROW_NUMBER()?

Sélection des lignes avec des modifications de valeur en utilisant row_number

dans le contexte d'un tableau où la colonne de valeur reflète un état changeant dans le temps, la sélection des moments où cette valeur a changé peut être une tâche analytique précieuse. Cet article présente une solution utilisant la fonction ROW_NUMBER pour identifier ces lignes, en considérant les deux scénarios où les valeurs peuvent augmenter ou fluctuer. ( Sélectionnez la valeur, le temps, rn = row_number () sur (Partition par ordre de valeur par temps) De dbo.table ) SELECT * FROM X WHERE RN = 1;

La fonction ROW_NUMBER partitions le tableau par la colonne de valeur et attribue des nombres consécutifs aux lignes dans l'ordre de leurs valeurs de temps dans chaque partition. En sélectionnant des lignes où le ROW_NUMBER est 1, nous récupérons la première occurrence de chaque valeur distincte, qui signifie un changement de valeur. Insérer les valeurs @x (0, '20120615 8:03:43 PM'), - (1, '20120615 8:03:43 PM'), - * (1, '20120615 8:03:48 PM'), - (1, '20120615 8:03:53 PM'), - (1, '20120615 8:03:58 PM'), - (2, '20120615 8:04:03 PM'), - * (2, '20120615 8:04:08 PM'), - (3, '20120615 8:04:13 PM'), - * (3, '20120615 8:04:18 PM'), - (3, '20120615 8:04:23 PM'), - (2, '20120615 8:04:28 PM'), - * (2, «20120615 8:04:33 PM»); ; Avec x comme ( SELECT *, RN = ROW_NUMBER () sur (Ordre by Time) De @x ) Sélectionnez X.Value, x. [Temps] De x gauche extérieure join x comme y Sur x.rn = y.rn 1 Et x.value & lt; & gt; Valeur Lorsque y.value n'est pas nul; Dans ce cas, nous attribuons ROW_NUMBERS à l'ensemble de données dans l'ordre chronologique. Nous effectuons ensuite une jointure extérieure gauche de la table avec elle-même, en correspondant des lignes avec des lignes consécutives et des valeurs non égales. Le résultat garantit la sélection des lignes uniquement qui ont une valeur distincte dans la ligne suivante.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3