Sql server 2008 获取重复行并基于单列计数

Sql server 2008 获取重复行并基于单列计数,sql-server-2008,tsql,Sql Server 2008,Tsql,我需要基于单个列(本例中的代码)获取不同的行,其中存在该列值的重复项。以及行中的其他信息和重复行的数量。例如: ID code ownerName -------------------------- 1 001 Mr. Brown 2 001 Mr. Pink 3 002 Mr. White 4 003 Mr. Blonde 我需要返回此查询 ID code ownerName

我需要基于单个列(本例中的代码)获取不同的行,其中存在该列值的重复项。以及行中的其他信息和重复行的数量。例如:

ID     code     ownerName
--------------------------
1      001      Mr. Brown
2      001      Mr. Pink
3      002      Mr. White
4      003      Mr. Blonde
我需要返回此查询

ID     code     ownerName    count
----------------------------------
1      001      Mr. Brown      2
重复的行信息与返回的行无关,但我在将不同的代码与count列组合时遇到了问题

我尝试过这样的查询:

SELECT DISTINCT A.code, A.ownerName 
FROM Customers A WHERE 
   EXISTS( SELECT * FROM Customers WHERE code = A.code AND id <> A.id) 
order by A.code;

我很难获得其他我不想分组的信息。有人能帮我找出如何构造正确的查询吗?

我想你可以试试下面的方法

       SELECT TOP 1 C.ID, C.Code, C.OwnerName, C1.NumberDuplicates
       FROM
       Customers C
       INNER JOIN
        (
        SELECT Code, COUNT(*) as NumberDuplicates  FROM Customers GROUP BY code HAVING COUNT(*) > 1
       ) C1
       ON C.Code = C1.Code

希望这有帮助

如果我了解您在寻找什么,这应该可以:

这将选择具有非唯一代码的所有条目,并返回使用该代码的记录数

SELECT DISTINCT A.ID, A.Code, A.ownerName, B.Count
FROM Customers A
JOIN (
  SELECT COUNT(*) as Count, B.Code
  FROM Customers B
  GROUP BY B.Code
) AS B ON A.Code = B.Code
WHERE B.Count > 1
ORDER by A.Code;

是的,这正是我要找的,我刚刚在选择列表中添加了B.count。谢谢
SELECT DISTINCT A.ID, A.Code, A.ownerName, B.Count
FROM Customers A
JOIN (
  SELECT COUNT(*) as Count, B.Code
  FROM Customers B
  GROUP BY B.Code
) AS B ON A.Code = B.Code
WHERE B.Count > 1
ORDER by A.Code;
SELECT COUNT(DISTINCT CustomerID) AS NumberOfCustomers FROM Orders;