Riepilogo: in questo tutorial, imparerai come confrontare due righe nella stessa tabella in Oracle.
Supponendo di avere una tabella product_prices
che memorizza la cronologia dei prezzi di tutti i prodotti. La seguente istruzione crea la tabella product_prices
:
Code language: SQL (Structured Query Language) (sql)
La tabella product_prices
ha le seguenti colonne:
-
id
è una colonna di identità i cui valori vengono generati automaticamente.id
è la chiave primaria della tabella. -
product_id
memorizza l’ID prodotto che identifica un prodotto. -
valid_from
memorizza la data effettiva dalla quale il prezzo di listino è valido. -
list_price
memorizza il prezzo di listino di un prodotto.
Le seguenti istruzioni INSERT
inseriscono alcune righe nella tabella product_prices
:
Code language: SQL (Structured Query Language) (sql)
Come puoi vedere, il prezzo dell’ID prodotto cambia. Per trovare le differenze tra ogni modifica successiva, è necessario confrontare due righe successive.
supponiamo che non vi è alcuna lacuna nel id
colonna e il prezzo di listino con la prima valida dalla data viene inserita prima che il prezzo di listino più tardi con validità dalla data, la seguente query confronta i prezzi fra l’id del prodotto,100
:
Code language: SQL (Structured Query Language) (sql)
In questa query, abbiamo usato il self-join che unisce il product_prices
tabella a se stesso. Il predicato join seguente consente la riga corrente con la riga precedente.
Code language: SQL (Structured Query Language) (sql)
Ora, dovresti sapere come confrontare due righe nella stessa tabella in Oracle.