Sie schwenken können, aber wenn Sie nicht den Namen des sozialen wissen Websites und es kann variieren, wie sie hinzugefügt werden, müssten Sie etwas tun, indem Sie dynamische SQL verwenden. Beachten Sie, dass für die Verwendung von Pivot eine eindeutige Adresse pro Partner und sozialen Typ angenommen wird.
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
wählt Fall, wenn name = ‚twitter‘ dann Wert Ende wie twitter, Fall, wenn name = ‚linkedin‘ dann Wert Ende als linkedin .... – artm
i auch das gleiche zu denken war ... aber für x annehmen Partner gibt es eine neue soziale Adresse sagen Instagram, in diesem Fall muss ich einen neuen Fall schreiben. Ich möchte diesen Fall überspringen. was ich will ist - was auch immer für einen bestimmten Partner in der sozialen Tabelle vorhanden ist, sollte in Überschrift - Wertepaare kommen. – Anurag
Bitte geben Sie das erwartete Ergebnis. –