Sammendrag: i denne vejledning lærer du, hvordan du sammenligner to rækker i samme tabel i Oracle.
forudsat at du har en product_prices
tabel, der gemmer prishistorik for alle produkter. Følgende sætning opretter tabellen product_prices
:
Code language: SQL (Structured Query Language) (sql)
tabellen product_prices
har følgende kolonner:
-
id
er en identitetskolonne, hvis værdier genereres automatisk.id
er den primære nøgle i tabellen. -
product_id
gemmer det Produkt-id, der identificerer et produkt. -
valid_from
gemmer den effektive dato, hvorfra listeprisen er gyldig. -
list_price
gemmer listeprisen for et produkt.
følgende INSERT
udsagn indsæt nogle rækker i product_prices
tabellen:
Code language: SQL (Structured Query Language) (sql)
som du kan se, ændres prisen på Produkt-id ‘ et. For at finde forskellene mellem hver efterfølgende ændring skal du sammenligne to på hinanden følgende rækker.
vi antager, at der ikke er noget hul i kolonnen id
, og listeprisen med den tidligere gyldige fra dato indsættes før listeprisen med senere Gyldig fra dato, følgende forespørgsel sammenligner priser mellem hver ændring af Produkt-id 100
:
Code language: SQL (Structured Query Language) (sql)
i denne forespørgsel brugte vi selvforbindelsen, der forbinder product_prices
tabellen til sig selv. Følgende join-prædikat tillader den aktuelle række med den forrige række.
Code language: SQL (Structured Query Language) (sql)
nu skal du vide, hvordan du sammenligner to rækker i samme tabel i Oracle.