Принимая предположения, что каждый владелец для каждой группы будет иметь 3 строки,
Если это не так, то я должен написать SP (не могу сделать прямо сейчас поможет вам в дальнейшем)
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
Обновление (По запросу OP)
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
если я скажу правильно, кросс-код запроса о суммах строк, но здесь у меня есть строки. –
Я пропустил это, и поэтому мой ответ неверен. SQL просто не будет делать то, что вы хотите. Вы должны написать хранимую процедуру. – Tarik