如何在联接上使用分区来计数

问题描述

我很困惑如何在count上不使用group by的情况下获得join

我知道我可以使用group by获得所需的结果,但是表联接很长,并且带有case语句的选定标题很多,所以我希望避免这种情况

我敢肯定,在使用partition over之前已经完成了此操作,但是找不到在联接上使用它的好例子。也许不可能!?

我尝试过

select
    p.FirstName,p.Surname,count(pr.RelativePersonId) over (partition by pr.RelativePersonId) as [RelativesOnRecord]
from People p
left join PersonRelatives pr
    on p.PersonId = pr.PersonId

对于我的桌子:

PersonId | FirstName | Surname
   1          Jim       Bo
   2         Harry      Bo
   3         Strong     Bo

PersonRelatives

Id | PersonId | RelativePersonId
 1      1              2
 2      1              3

我要去哪里

PersonId | FirstName | Surname | RelativesOnRecord
    1         Jim         Bo          2

我也尝试过加入SELECT TOP 1,但这只给了我一个结果,因此很重要。如果没有group by,这是否有可能?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)