所以,我已经做了很多搜索和摆弄,但找不到解决方案。也许我的情况是独一无二的——或者更有可能我只是不知道我在做什么。我比刚开始时更接近了,所以这令人振奋。无论如何-我们在这里进行智囊团-非常感谢任何帮助。
我需要加入 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
这就是我要的。我已经尝试了很多东西,包括枢轴和非枢轴,交叉应用 - 但我似乎无法得到这个结果:
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。
已解决我使用了下面Bluefeet提供的答案,它就像一个魅力。还要感谢 Cha 抽出时间提供帮助。