我想计算每个成员在组建团队之前与其他团队成员之前的关系数量。计算个人之前与其他团队成员在当前团队之前的关系
我有以下表
TeamId \t UserId \t Date
1 \t 100 \t 2/1/2017
1 \t 101 \t 2/1/2017
1 \t 102 \t 2/1/2017
2 \t 100 \t 2//1/2016
2 \t 105 2//1/2016
3 \t 100 \t 2//1/2015
3 \t 101 \t 2//1/2015
3 \t 102 \t 2//1/2015
3 \t 105 \t 2//1/2015
3 \t 106 \t 2//1/2015
4 \t 101 1/3/2015
4 \t 102 \t 1/3/2015
4 \t 105 1/3/2015
4 \t 106 \t 1/3/2015
我想下表
TeamId \t number of previous collaborations
1 \t 4
2 \t 1
3 \t 6
4 \t 0
例如FO得到用户100与用户101曾经在队伍3中合作过,而用户102曾经在队伍3中合作过,因此用户101已经与用户102合作两次(一次在队伍3中,一次在队伍4中) = 1 + 1 = 2
所以以前的合作为这支球队的数量为4
我不知道怎么写的代码。任何帮助表示赞赏
SELECT [TeamId],
COUNT(SELECT [Date] FROM [submissions] s1
WHERE s.[UserId] = [submissions].[UserId]
AND [Date]< [submissions].[Date]
ORDER BY [DateSubmitted] DESC) as Num_Collaborations
)
FROM [submissions]
具有挑战性的问题。这个链接应该让你开始...我只是没有更多的时间来处理它。关注结果,而不是代码。一旦你理解了这些,你就可以从cte过滤出你的下一个代码。 http://rextester.com/OSS61370 – scsimon
谢谢@scsimon。我用你的代码来产生我的答案。 –
非常感谢@scsimon – user4172070