Podsumowanie: w tym samouczku dowiesz się, jak porównać dwa wiersze w tej samej tabeli w Oracle.
zakładając, że masz product_prices tabelę, która przechowuje historię cen wszystkich produktów. Poniższe polecenie tworzy tabelę product_prices :
Code language: SQL (Structured Query Language) (sql)
tabela product_prices zawiera następujące kolumny:
-
idjest kolumną tożsamości, której wartości są generowane automatycznie.idjest podstawowym kluczem tabeli. -
product_idPrzechowuje identyfikator produktu, który identyfikuje produkt. -
valid_fromprzechowuje datę wejścia w życie, od której obowiązuje cena katalogowa. -
list_priceprzechowuje cenę katalogową produktu.
poniższe polecenia INSERT wstawiają kilka wierszy do tabeli product_prices :
Code language: SQL (Structured Query Language) (sql)
jak widać, zmienia się cena identyfikatora produktu. Aby znaleźć różnice między kolejnymi zmianami, musisz porównać dwa kolejne wiersze.
Zakładamy, że nie ma luki w kolumnie id i CENA KATALOGOWA z wcześniejszą ważną od daty jest wstawiana przed ceną katalogową z późniejszą ważną od daty, poniższe zapytanie porównuje ceny między każdą zmianą id Produktu100:
Code language: SQL (Structured Query Language) (sql)

w tym zapytaniu użyliśmy funkcji self-join, która łączy tabelę product_prices ze sobą. Następujący predykat join pozwala na dodanie bieżącego wiersza do poprzedniego wiersza.
Code language: SQL (Structured Query Language) (sql)
teraz powinieneś wiedzieć, jak porównać dwa wiersze w tej samej tabeli w Oracle.