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:
-
id
je sloupec identity, jehož hodnoty jsou generovány automaticky.id
je primárním klíčem tabulky. -
product_id
ukládá ID produktu, které identifikuje produkt. -
valid_from
ukládá datum účinnosti, od kterého je Ceníková cena platná. -
list_price
uklá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.