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:
-
idist eine Identitätsspalte, deren Werte automatisch generiert werden. Deridist der Primärschlüssel der Tabelle. -
product_idspeichert die Produkt-ID, die ein Produkt identifiziert. -
valid_fromspeichert das Datum des Inkrafttretens, ab dem der Listenpreis gültig ist. -
list_pricespeichert 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.