我很难弄清楚如何实现这一目标。我知道如何在 C# 中实现它,但不知道 SQL。
假设我有下表:
ID | 姓名 | 路线编号 |
---|---|---|
1 | 鲍勃 | 1001 |
2 | 鲍勃 | 1002 |
3 | 安娜 | 1001 |
4 | 吉姆 | 1001 |
5 | 伊莱 | 1001 |
我想返回整个表,并用一个额外的列显示routeID
按名称的总出现次数,所以where name='Bob'
看起来像:
ID | 姓名 | 路线编号 | 全部的 |
---|---|---|---|
1 | 鲍勃 | 1001 | 4 |
2 | 鲍勃 | 1002 | 1 |
但是,如果我写类似
declare @ct as nvarchar(5)
set @ct = (SELECT COUNT(RouteId) from <table>)
select *, @ct
from <table>
where name = 'Bob'
我得到了所有路线 ID 的总数,而不仅仅是行中显示的那个。
我尝试查看计算列,但据我所知,它不支持这种类型的查询。
谁能指出我正确的方向?
COUNT
您可以在派生表(子查询)中使用窗口化db<>小提琴
另外三种选择:
子查询
申请
加入
db<>fiddle在线演示