Taking assumptions,that each owner for each group will have 3 rows,
If that's not the case then i have to write a SP (can't do right now will help you later on)
select [owner], [group],
parsename(Model,3) as Model1
,parsename(Model,2) as Model1
,parsename(Model,1) as Model1
from
(
select [owner], [group],
STUFF((
select '.' + model
from Table1 t2 where
t2.[owner]=t1.[owner]
and t2.[group]=t1.[group]
for xml path('')),1,1,'') Model
from Table1 t1
group by [owner],[group]
)t
SQl Fiddle
Update (As per OP request)
select [owner]
,case len(model)-len(replace(model,'.',''))
when 3 then parsename(replace(model,'.'+reverse(substring(reverse(model),1,charindex('.',model,1))),''),3)
when 2 then parsename(Model,3)
when 1 then parsename(Model,2)
else Model
end as Model1
,case len(model)-len(replace(model,'.',''))
when 3 then parsename(replace(model,'.'+reverse(substring(reverse(model),1,charindex('.',model,1))),''),2)
when 2 then parsename(Model,2)
when 1 then parsename(Model,1)
else ''
end as Model2
,case len(model)-len(replace(model,'.',''))
when 3 then parsename(replace(model,'.'+reverse(substring(reverse(model),1,charindex('.',model,1))),''),1)
when 2 then parsename(Model,1)
else ''
end as Model3
,case len(model)-len(replace(model,'.',''))
when 3 then reverse(substring(reverse(model),1,charindex('.',model,1)))
else ''
end as Model4
from
(
select [owner],
STUFF((
select '.' + model
from Table1 t2 where
t2.[owner]=t1.[owner]
for xml path('')),1,1,'') Model
from Table1 t1
group by [owner]
)t
SQl Fiddle