A simple one (if you know at design time the maximum number of colors you could possibly have)
drop table my_test;
create table my_test (
id number,
name varchar2(32),
color varchar2(32),
version number);
insert into my_test values(1,'leather','black',1);
insert into my_test values(1,'leather','brown',2);
insert into my_test values(2,'suede','brown',1);
insert into my_test values(3,'cloth','green',1);
insert into my_test values(3,'cloth','blue ',2);
set linesize 200
select min(id) id,
name,
max(decode(version,1,color,null)) color,
max(decode(version,2,color,null)) color_2
from my_test
group by name
order by 1;
ID NAME COLOR COLOR_2
---------- ---------- ---------- ----------
1 leather black brown
2 suede brown
3 cloth green blue
3 rows selected.
This will work with any Oracle database version. Depending on the version you use, look at the LISTAGG, WM_CONCAT and the like (here)