Answer:
with s as
(select p.category,
p.name,
o.orderdate,
o.orderid,
p.productid
from orderdetails od
join orders o on od.orderid = o.orderid
join products p on od.productid = p.productid)
select distinct category,
FIRST_VALUE(name) over (partition by category
order by orderdate,
orderid,
productid rows between unbounded PRECEDING and unbounded following) as productname,
FIRST_VALUE(orderdate) over (partition by category
order by orderdate,
orderid,
productid rows between unbounded PRECEDING and unbounded following) as firstsolddate
from s
order by category;