une option est :
select d.id, min(name) keep (dense_rank first order by name_priority) name,
min(name_priority) name_priority,
min(color) keep (dense_rank first order by color_priority) color,
min(color_priority) color_priority
from yourtab d
group by id;