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:
-
id
est une colonne d’identité dont les valeurs sont générées automatiquement. Leid
est la clé primaire de la table. -
product_id
stocke l’ID de produit qui identifie un produit. -
valid_from
stocke la date d’entrée en vigueur à partir de laquelle le prix catalogue est valide. -
list_price
stocke 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.