sammanfattning: i den här handledningen lär du dig att jämföra två rader i samma tabell i Oracle.
förutsatt att du har en product_prices
tabell som lagrar prishistorik för alla produkter. Följande uttalande skapar tabellen product_prices
:
Code language: SQL (Structured Query Language) (sql)
tabellen product_prices
har följande kolumner:
-
id
är en identitetskolumn vars värden genereras automatiskt.id
är den primära nyckeln i tabellen. -
product_id
lagrar Produkt-id som identifierar en produkt. -
valid_from
lagrar det ikraftträdandedatum från vilket listpriset är giltigt. -
list_price
lagrar listpriset för en produkt.
följande INSERT
– satser infogar några rader i tabellen product_prices
:
Code language: SQL (Structured Query Language) (sql)
som du kan se ändras priset på Produkt-id. För att hitta skillnaderna mellan varje efterföljande ändringar måste du jämföra två på varandra följande rader.
vi antar att det inte finns något gap i kolumnen id
och listpriset med det tidigare giltiga från datumet infogas före listpriset med senare giltigt från datum, jämför följande fråga priser mellan varje ändring av produkt-id 100
:
Code language: SQL (Structured Query Language) (sql)
i den här frågan använde vi självkopplingen som går med i tabellen product_prices
till sig själv. Följande kopplingspredikat tillåter den aktuella raden med föregående rad.
Code language: SQL (Structured Query Language) (sql)
nu borde du veta hur man jämför två rader i samma tabell i Oracle.