所以,我已经进行了相当多的搜索和试验,但还是找不到解决方案。也许我的情况很独特——或者更可能的是我根本不知道自己在做什么。不过我比开始时更接近成功了,这让人振奋。好了,现在我们来看看问题吧——任何帮助都将不胜感激。
我需要连接两个查找表,它们看起来像这样(由于没有足够的声望点数来发布图片,因此以下是我的虚拟表):
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
我希望你能帮我翻译这段内容。它与IT技术有关,我尝试过许多方法,包括数据透视和反透视、交叉应用等,但似乎无法得到这个结果:
member_id linkedin facebook twitter
16972 www.linkedin.com/somename www.facebook.com/somename www.twitter.com/somename
我可以处理这个,我在join之后不需要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。
已解决 我使用了下面Bluefeet提供的答案,它运行得很好。同时感谢Cha花时间帮忙。