【发布时间】:2020-09-10 11:23:30
【问题描述】:
我很困惑如何在不使用group by 的join 上获得count
我知道我可以使用 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
亲人
Id | PersonId | RelativePersonId
1 1 2
2 1 3
我想去哪里
PersonId | FirstName | Surname | RelativesOnRecord
1 Jim Bo 2
我也尝试加入SELECT TOP 1,但这只是给了我一个结果,所以一个计数。如果没有group by,这甚至可能吗?
【问题讨论】:
标签: sql sql-server database-partitioning