Résumé: dans ce tutoriel, vous apprendrez à comparer deux lignes d’un même tableau dans Oracle.
En supposant que vous disposez d’une table product_prices qui stocke l’historique des prix de tous les produits. L’instruction suivante crée la table product_prices:
Code language: SQL (Structured Query Language) (sql)
La table product_prices comporte les colonnes suivantes:
-
idest une colonne d’identité dont les valeurs sont générées automatiquement. Leidest la clé primaire de la table. -
product_idstocke l’ID de produit qui identifie un produit. -
valid_fromstocke la date d’entrée en vigueur à partir de laquelle le prix catalogue est valide. -
list_pricestocke le prix catalogue d’un produit.
Les instructions INSERT suivantes insèrent quelques lignes dans la table product_prices:
Code language: SQL (Structured Query Language) (sql)
Comme vous pouvez le voir, le prix de l’identifiant du produit change. Pour trouver les différences entre chaque modification ultérieure, vous devez comparer deux lignes successives.
Nous supposons qu’il n’y a pas d’écart dans la colonne id et que le prix catalogue avec la date de validité antérieure est inséré avant le prix catalogue avec la date de validité ultérieure, la requête suivante compare les prix entre chaque changement de l’id du produit 100:
Code language: SQL (Structured Query Language) (sql)
Dans cette requête, nous avons utilisé l’auto-jointure qui joint la table product_prices à elle-même. Le prédicat de jointure suivant autorise la ligne actuelle avec la ligne précédente.
Code language: SQL (Structured Query Language) (sql)
Maintenant, vous devez savoir comparer deux lignes dans la même table dans Oracle.