Resumo: neste tutorial, você vai aprender como comparar duas linhas na mesma tabela no Oracle.
supondo que você tenha uma tabela product_prices
que armazene o histórico de preços de todos os produtos. A seguinte instrução cria o product_prices
tabela:
Code language: SQL (Structured Query Language) (sql)
O product_prices
tabela tem as seguintes colunas:
-
id
é uma coluna de identidade, cujos valores são gerados automaticamente. Oid
é a chave primária da tabela. -
product_id
armazena o ID do produto que identifica um produto. -
valid_from
armazena a data efetiva a partir da qual o preço de tabela é válido. -
list_price
armazena o preço de tabela de um produto.
as seguintes instruções INSERT
inserem algumas linhas na tabela product_prices
:
Code language: SQL (Structured Query Language) (sql)
como você pode ver, o preço do ID do produto muda. Para encontrar as diferenças entre cada alteração subsequente, você precisa comparar duas linhas sucessivas.
assumimos que não há diferença na id
coluna e o preço de lista com o anterior válida a partir da data é inserida antes da lista de preços com posterior válido a partir da data, a consulta a seguir compara os preços entre cada alteração da identificação do produto 100
:
Code language: SQL (Structured Query Language) (sql)
nesta consulta, foi utilizada a auto-junção que une a product_prices
tabela própria. O seguinte predicado de junção permite a linha atual com a linha anterior.
Code language: SQL (Structured Query Language) (sql)
Agora, você deve saber como comparar duas linhas na mesma tabela no Oracle.