[英]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(和谷歌),我发现了其中一些结果:
这些链接以及我在网上找到的所有内容的问题在于它们都在使用 GROUP BY。 有没有一种简单、干净的方法来获取表中每个名称的计数,然后将数字写入每一行的列?
也许你只需要一个窗口COUNT()
:
SELECT Name, Number, COUNT(Name) OVER (PARTITION BY Name) AS NoEntries
FROM MyTable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.