select p1.product_id,p1.new_price price
from products p1
where (p1.product_id,p1.change_date) in (
select p.product_id,max(change_date) lastDate
from products p
where p.change_date<='2019-08-16'
group by product_id
)
union all
select distinct p2.product_id,10 price
from products p2
where p2.product_id not in(
select p3.product_id
from products p3
where p3.change_date<='2019-08-16'
)