SQL 查找重复值

问题描述 投票:0回答:1

我正在创建一个查询来查找表中的重复项。我有 ID、客户编号和状态列。

Status
列可以是(“打开”)或(“关闭”)。我想要完成的是创建一个查询,我可以在其中查看
ID
是否已重复。

因此,查询的最终结果将是一行将

ID
显示为(“打开”),另一行将 ID 显示为(“关闭”)。我们知道它是重复的,因为只能有一个
ID
需要(“打开”)。

这是我查看(“打开”)项目的代码,但我想验证相同的

customerid
是否已(“关闭”)......任何见解将不胜感激。

SELECT
    customerID, customernumber,
    COUNT(DISTINCT orderid)
FROM 
    test.dbo
WHERE
    Status IN ('open')
GROUP BY 
    Customerid, Customernumber
HAVING 
    COUNT(DISTINCT orderid) > 1
sql sql-server duplicates
1个回答
0
投票

您可以使用以下任何查询,

使用排名,

SELECT customerID, customernumber, status
from 
(SELECT
    customerID, customernumber, status,
    row_number() over(partition by customerID order by status) as rnk
FROM 
    test.dbo) T1 where rnk > 1;

使用加入

SELECT T1.* FROM test.dbo T1
INNER JOIN
(SELECT
    customerID, COUNT(1)
FROM test.dbo GROUP BY Customerid HAVING COUNT(1) > 1) T2
on (T1.customerID = T2.customerID);
© www.soinside.com 2019 - 2024. All rights reserved.