繁体   English   中英

如何计算 SQL 服务器中的重复项并将每行的结果写入一列(不排除行)?

[英]How can I get a count for duplicates in SQL Server and write the result for each row to a column (without excluding rows)?

假设我有一张桌子,像这样:

我的表

Name     | Number
-----------------
John     |   3
Jacob    |   2
Mark     |   5
John     |   62
Kathy    |   1
John     |   1
Alex     |   38
Mark     |   44

如何获取名称在给定列中出现的次数,然后将该数字显示到新列?

例如,这将是我想要的 output:

Name     | Number  | NoEntries
------------------------------
John     |   3     |     3
Jacob    |   2     |     1
Mark     |   5     |     2
John     |   62    |     3
Kathy    |   1     |     1
John     |   1     |     3
Alex     |   38    |     1
Mark     |   44    |     2

本能地,我想使用类似的东西

SELECT Name, COUNT(Name) AS NoEntries
FROM MyTable
GROUPBY Name;

但是,这不仅省略了 Number 列,而且也不会返回所有结果。 我想列出所有结果,不排除任何行,然后简单地放置一列,其中包含 Name 在表中出现的次数。

搜索stackoverflow(和谷歌),我发现了其中一些结果:

统计 SQL 服务器中的重复值并显示为另一列

计算列中的重复数据并每行显示一次 - SQL

在 SQL 表中查找重复值

这些链接以及我在网上找到的所有内容的问题在于它们都在使用 GROUP BY。 有没有一种简单、干净的方法来获取表中每个名称的计数,然后将数字写入每一行的列?

也许你只需要一个窗口COUNT()

SELECT Name, Number, COUNT(Name) OVER (PARTITION BY Name) AS NoEntries
FROM MyTable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM