概要:このチュートリアルでは、Oracleで同じテーブル内の2つの行を比較する方法を学習します。
すべての製品の価格履歴を格納するproduct_prices
テーブルがあると仮定します。 次のステートメントは、product_prices
テーブルを作成します:
Code language: SQL (Structured Query Language) (sql)
product_prices
テーブルには次の列があります:
-
id
値が自動的に生成されるid列です。id
は、テーブルの主キーです。 product_id
は、製品を識別する製品idを格納します。valid_from
は、定価が有効である発効日を格納します。list_price
は、製品の定価を格納します。
次のINSERT
ステートメントは、product_prices
テーブルにいくつかの行を挿入します:
Code language: SQL (Structured Query Language) (sql)
ご覧のとおり、製品idの価格が変更されます。 後続の各変更の違いを見つけるには、2つの連続する行を比較する必要があります。
id
列にギャップがなく、以前の有効開始日の定価が後の有効開始日の定価の前に挿入されていると仮定します。100
:
Code language: SQL (Structured Query Language) (sql)
の同じテーブルの2つの行を比較する方法このクエリでは、product_prices
テーブルを自分自身に結合する自己結合を使用しました。 次の結合述語では、現在の行と前の行を使用できます。ここで、Oracleの同じテーブル内の2つの行を比較する方法を知っている必要があります。