我有一个组织的SQL Server数据库,其中有许多重复的行.我想运行一个select语句来获取所有这些和重复的数量,但也要返回与每个组织关联的ID.

这样的声明:

SELECT     orgName, COUNT(*) AS dupes  
FROM         organizations  
GROUP BY orgName  
HAVING      (COUNT(*) > 1)

将返回类似于

orgName        | dupes  
ABC Corp       | 7  
Foo Federation | 5  
Widget Company | 2 

但我也想拿到他们的身份证.有什么办法吗?也许像个

orgName        | dupeCount | id  
ABC Corp       | 1         | 34  
ABC Corp       | 2         | 5  
...  
Widget Company | 1         | 10  
Widget Company | 2         | 2  

原因是,还有一个单独的用户表链接到这些组织,我想将它们统一起来(因此删除重复,以便用户链接到同一组织,而不是重复组织).但我想手动退出,这样我就不会搞砸任何事情,但我仍然需要一个声明,返回所有复制组织的ID,这样我就可以查看用户列表.

推荐答案

select o.orgName, oc.dupeCount, o.id
from organizations o
inner join (
    SELECT orgName, COUNT(*) AS dupeCount
    FROM organizations
    GROUP BY orgName
    HAVING COUNT(*) > 1
) oc on o.orgName = oc.orgName

Sql相关问答推荐

带有双引号的json在Presto中是否有区别对待?

在SQL Server中使用LEFT连接包含特定记录

基于模式或其他行集的数据复制

如果元素包含通过SQL指定的字符串,则过滤掉数组元素

Select 非重复值并按条件排除行

查询页面推荐

明细表中没有记录如何更新主表的值为0

SQL递归.硬币兑换问题.-try 使用递归解决硬币找零问题

插入具有预期逻辑的查询以Forking 表

如何根据 SQL 中的阈值标记一个集群中的所有值?

计算组内多个日期间隔go 年的累计天数

根据潜在空值的条件对记录进行计数

使用其他表 SUM 的交换价格转换价格并获得 AVG

在 BigQuery 数据集中查找表大小和占总数据集大小的百分比

使用 SAVE TRANSACTION 时 BEGIN 和 COMMIT 语句的数量不匹配

为什么 Oracle 在一个查询中对同一张表同时执行 TABLE SCAN 和 INDEX UNIQUE SCAN?

每组跨行曲折?

sql count distinct by column 和 sum false 和 true

按 15 分钟递增计数分组,包括 0 计数

使用一组值进行分组和计数