Remove duplicates and connect relations to the first one
Well,
Apologies to all those SQL guru's - this might be a simplistic answer. 

Since the product table will only have one record per product you don't need the ID column and can just use the 'sku' as the key.

Insert into that table a distinct list of the products
 e.g 

INSERT INTO products (sku,ProductName)
SELECT DISTINCT (sku,ProductName)
FROM OldProductTable


That's your product table sorted.

How can you tell from your original data which price is the latest price? You have potentially two prices it could be. Lets presume the latest ID is the latest price. 

Now you need to create a price table (as you have done) and create your foreign keys on it. You need some way of telling which is the current price though. One way is to give each record an iteration column, so the highest value in it is the latest price. Before you scream - this is a bit rubbish but is the only way I can see it fitting your data.

INSERT INTO ProductPrices (sku, PriceOld, PriceNew, iteration)
SELECT sku, PriceOld, PriceNew, ID
FROM OldProductTable


The primary key is sku and iteration. You want the latest price you just select the product and return the record with the highest iteration. 

A better way to do it would be to have the concept of recording the price that was valid  date range:

Product ID,Price,StartDate,EndDate


Live prices will not have an end date (null). When you want to change a price you simply update the end date and add a new record with the start date being the date the new price comes in to effect.

That's just me though! Be happy to see other peoples views.