shrnutí: v tomto tutoriálu se dozvíte, jak porovnat dva řádky ve stejné tabulce v Oracle.
za předpokladu, že máte tabulku product_prices, která ukládá historii cen všech produktů. Následující příkaz vytvoří tabulku product_prices :
Code language: SQL (Structured Query Language) (sql)
tabulka product_prices obsahuje následující sloupce:
-
idje sloupec identity, jehož hodnoty jsou generovány automaticky.idje primárním klíčem tabulky. -
product_idukládá ID produktu, které identifikuje produkt. -
valid_fromukládá datum účinnosti, od kterého je Ceníková cena platná. -
list_priceukládá katalogovou cenu produktu.
následující příkazy INSERT vkládají některé řádky do tabulky product_prices :
Code language: SQL (Structured Query Language) (sql)
jak vidíte, cena id produktu se mění. Chcete-li najít rozdíly mezi jednotlivými následnými změnami, musíte porovnat dva po sobě jdoucí řádky.
předpokládáme, že ve sloupci id není mezera a Ceníková cena s dřívějším platným datem je vložena před ceníkovou cenu s pozdějším platným datem, následující dotaz porovnává ceny mezi každou změnou id produktu100:
Code language: SQL (Structured Query Language) (sql)

v tomto dotazu jsme použili self-join, který spojuje tabulku product_prices k sobě. Následující predikát spojení umožňuje aktuální řádek s předchozím řádkem.
Code language: SQL (Structured Query Language) (sql)
Nyní byste měli vědět, jak porovnat dva řádky ve stejné tabulce v Oracle.