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.
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