我有一個表與合作伙伴詳細信息,如[ID],[PartnerName],[webaddress],[簡短描述]等列值作爲行標題
我的期望的輸出是
ID,PartnerName,webaddress,從夥伴表[簡短描述]和[微博],[Facebook的],[LinkedIn]從社會表
的值s在名稱列中應該出現在我的輸出表的列標題中,該特定夥伴
我們可以通過sql查詢來實現嗎?
我有一個表與合作伙伴詳細信息,如[ID],[PartnerName],[webaddress],[簡短描述]等列值作爲行標題
我的期望的輸出是
ID,PartnerName,webaddress,從夥伴表[簡短描述]和[微博],[Facebook的],[LinkedIn]從社會表
的值s在名稱列中應該出現在我的輸出表的列標題中,該特定夥伴
我們可以通過sql查詢來實現嗎?
您可以使用支點,但如果你不知道社會的名它們可能會隨着它們的添加而變化,所以你需要使用動態sql來做這樣的事情。請注意,爲了使用數據透視,它爲每個社交類型的每個合作伙伴假設一個不同的地址
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
謝謝@MPR,我收到了預期的結果。 – Anurag
請根據需要使用PIVOT
功能。 你可以看到這個問題的答案:Convert Rows to columns using 'Pivot' in SQL Server
你也可以閱讀有關如何轉動表MSDN文檔:https://msdn.microsoft.com/en-us/library/ms177410.aspx
選擇情況下,當名=「嘰嘰喳喳」,那麼價值的最終如Twitter,情況下,當名=「LinkedIn」,則值作爲最終.... LinkedIn我 – artm
也在想同樣的...但假設爲X合夥人有一個新的社交地址說instagram,在這種情況下,我需要寫一個新的案例。我想跳過這些情況。我想要的是 - 無論是在社交表中的特定合作伙伴,都應該出現在標題 - 值對中。 – Anurag
請給出預期的結果。 –