首页 > 解决方案 > 选择重复记录

问题描述

我只想检索重复记录而不是唯一记录。假设我有如下组成的数据

Ids Names 
1  A
2  B
1  A

我想要如下输出:

Sno Id Name 
1  1 A 
2  1 A 

标签: sql-servertsql

解决方案


尝试这个:

DECLARE @DataSource TABLE
(
    [ID] INT
   ,[name] CHAR(1)
   ,[value] CHAR(2) 
);

INSERT INTO @DataSource ([ID], [name], [value])
VALUES (1, 'A', 'x1')
      ,(2, 'B', 'x2')
      ,(1, 'A', 'x3');

WITH DataSource AS
(
    SELECT *
          ,COUNT(*) OVER (PARTITION BY [ID], [name]) AS [Count]
    FROM @DataSource
)
SELECT *
FROM Datasource
WHERE [Count] > 1;

在此处输入图像描述

分组部分PARTITION BY在窗口函数部分完成。ID因此,基本上,我们正在计算每个唯一name对的记录。当然,您可以在此处添加更多列。


推荐阅读