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:
-
id
jest kolumną tożsamości, której wartości są generowane automatycznie.id
jest podstawowym kluczem tabeli. -
product_id
Przechowuje identyfikator produktu, który identyfikuje produkt. -
valid_from
przechowuje datę wejścia w życie, od której obowiązuje cena katalogowa. -
list_price
przechowuje 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.