You can use pivot, but if you do not know the name of the social sites and it may vary as they are added, you would need to do something like this by using dynamic sql. Note that it assumes one distinct address per partner per social type in order to use pivot.
create table #partners (
ID int
,PartnerName nvarchar(100)
,WebAddress nvarchar(100)
,ShortDescription nvarchar(100)
)
create table #social (
ID int
,Name nvarchar(100)
,Value nvarchar(100)
,PartnerID int
,IsActive int
)
insert into #partners
values (1, 'Bob Jones', 'www.bobjones.com', 'bob desc')
,(2, 'Mike Smith', 'wwww.mikesmith.com', 'mike desc')
insert into #social
values (1, 'Facebook', 'www.facebook.com/bobjones', 1,1)
,(2, 'Twitter', 'wwww.twitter.com/bobjonestweets', 1,1)
,(3, 'Linkedin','wwww.linkedin.com/msmith', 2,1)
,(4, 'Facebook', 'www.facebook.com/smitty',2,1)
declare @columns nvarchar(max) = (
select '[' + Name + '],'
from (select distinct Name from #social ) Name
for xml path (''))
declare @SQL nvarchar(max)
set @SQL = 'select *
from (
select p.ID, PartnerName, WebAddress, ShortDescription, Name, Value
from #partners p
join #social s on p.ID = s.PartnerID
where s.IsActive = 1
) s
pivot ( max(Value) for [Name] in (' + left(@columns, len(@columns)-1) +
')) as piv'
exec sp_executesql @SQL