price_changes (change_id, product_id, changed_at, price) logs every price change. The product's current price is the one set by its latest change. Two changes can share the same changed_at; the one with the larger change_id was applied last.
Return every change with final_price: the product's current price, repeated on each of its rows.
Columns: product_id, change_id, changed_at, price, final_price. Sort by product_id, changed_at, change_id.