所以,我做了很多搜索和擺弄,找不到解決方案。也許我的情況是獨一無二的 - 或者更可能是我不知道我在做什麼。我比我開始的時候更加接近,所以這是令人振奮的。無論如何 - 在這裏,我們去信任,任何援助是非常感謝。SQL Join/Pivot/Unpivot = Madness
我需要加入看起來像這樣2個查找表(沒有足夠的代表處點尚未發表圖片所以這裏是我假裝表):
Social Network Member [table]
member_id social_network_id connection_id_string
16972 1 www.linkedin.com/somename
16972 2 www.twitter.com/somename
16972 3 www.facebook.com/somename
180301 1 www.linkedin.com/anothername
Social Network [table]
social_network_id name calling_string
1 Linkedin www.linkedin.com
2 Twitter www.twitter.com
3 Facebook www.facebook.com
這就是我想要的。我已經嘗試了很多事情,包括樞軸和unpivots,跨應用 - 但我似乎無法得到這樣的結果:
member_id linkedin facebook twitter
16972 www.linkedin.com/somename www.facebook.com/somename www.twitter.com/somename
我將能夠與工作,我有沒有用的social_network_id或加入後的calling_string。這是我的查詢,這不是很好的工作。
SELECT member_id, [facebook],[linkedin],[myspace],[twitter]
FROM (
SELECT member_id,name,social_network_id,calling_string,connection_id_string
FROM social_network_member INNER JOIN
social_network ON social_network_member.social_network_id = social_network.social_network_id
CROSS APPLY (VALUES ('NAME',name),
('CONNECTION STRING', connection_id_string),
('CALLING STRING',calling_string))
Unpivoted(club_id,member_id)) as Sourcetable
Pivot (MAX(connection_id_string) For name in([facebook],[linkedin],[myspace],[twitter])) AS PVT
我能說的最好的是交叉應用真的沒有做任何事情。我猜那裏的語法......你能告訴嗎?
這是我得到什麼(從我一直在搜索中已經看到有些典型值):
member_id facebook linkedin myspace twitter
16972 NULL www.linkedin.com/somename NULL NULL
16972 www.facebook.com/somename NULL NULL NULL
...
...
是我想甚至可能嗎?任何關於如何到達那裏的指針?我的查詢是否都被擡高了?
在此先感謝女士們和男士們。
我忘記提到這一點,但我使用SQL Server 2012 - SSMS。
RESOLVED我用下面的Bluefeet提供的答案,它的工作就像一個魅力。還要感謝Cha花時間提供幫助。
只是**這三個**網絡還是應該查詢手柄**只要他們在「社交網絡」表中的任何數字**?如果只有三個,你應該能夠用三個CASE WHEN結構逃脫。 –
您正在使用哪種RDMS? –
交叉應用是MSSQL,我認爲。 @ apoji187 +1爲偉大的第一篇文章,很好地與表格創建和選擇語句提供...非常明顯,你試圖解決自己。將來,請記住在標籤中添加您正在使用的數據庫,以便人們知道您使用的是什麼sql。跨應用/交叉連接語法在不同數據庫中是非常獨特的。 – Twelfth