Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie zwei Zeilen in derselben Tabelle in Oracle vergleichen.
Angenommen, Sie haben eine product_prices
-Tabelle, in der der Preisverlauf aller Produkte gespeichert ist. Die folgende Anweisung erstellt die Tabelle product_prices
:
Code language: SQL (Structured Query Language) (sql)
Die Tabelle product_prices
enthält die folgenden Spalten:
-
id
ist eine Identitätsspalte, deren Werte automatisch generiert werden. Derid
ist der Primärschlüssel der Tabelle. -
product_id
speichert die Produkt-ID, die ein Produkt identifiziert. -
valid_from
speichert das Datum des Inkrafttretens, ab dem der Listenpreis gültig ist. -
list_price
speichert den Listenpreis eines Produkts.
Die folgenden INSERT
-Anweisungen fügen einige Zeilen in die product_prices
-Tabelle ein:
Code language: SQL (Structured Query Language) (sql)
Wie Sie sehen, ändert sich der Preis der Produkt-ID. Um die Unterschiede zwischen den einzelnen nachfolgenden Änderungen zu ermitteln, müssen Sie zwei aufeinanderfolgende Zeilen vergleichen.
Wir gehen davon aus, dass in der Spalte id
keine Lücke vorhanden ist und der Listenpreis mit dem früheren Gültigkeitsdatum vor dem Listenpreis mit dem späteren Gültigkeitsdatum eingefügt wird.Die folgende Abfrage vergleicht die Preise zwischen jeder Änderung der Produkt-ID 100
:
Code language: SQL (Structured Query Language) (sql)
In dieser Abfrage haben wir den Self-Join verwendet, der die product_prices
-Tabelle mit sich selbst verbindet. Das folgende Join-Prädikat erlaubt die aktuelle Zeile mit der vorherigen Zeile.
Code language: SQL (Structured Query Language) (sql)
Jetzt sollten Sie wissen, wie Sie zwei Zeilen in derselben Tabelle in Oracle vergleichen.