I am not a SQL guy, I have used it in the past and rarely have an issue that cant be solved by google... however this time I need to ask the Community.
select * from
(
select
T.ProdNo,
T.TransactionDate as 'LastPurchaseDate',
T.Price,
row_number() over (partition by ProdNo order by TransactionDate desc) as rnk
from Transactions T
)a
where rnk='1'