SQL显示每行上的重复记录总数

时间:2018-12-03 15:43:06

标签: sql sql-server

我想添加一列,以显示“名称”在其他行中出现了多少次。基本上该名称出现的总次数,但在每一行中列出。

select number, name from table;

添加前的样本数据:

number  name     
1234    storeA
1235    storeA
1236    storeA
1237    storeB
1238    storeC
1239    storeC

添加后所需的输出

number  name    Total
1234    storeA  3
1235    storeA  3
1236    storeA  3
1237    storeB  1
1238    storeC  2
1239    storeC  2

1 个答案:

答案 0 :(得分:5)

您可以使用窗口功能:

select t.*,
       count(*) over (partition by name) as total
from table t;

但是,如果窗口函数不起作用,ANSI SQL标准会提供关联子查询方法:

select t.*,
       (select count(*)
        from table t1
        where t1.name = t.name
       ) as total
from table t;