获取重复记录以及ssis中的唯一记录

时间:2013-03-14 20:24:21

标签: sql sql-server sql-server-2008 ssis

我有下面提到的表(id和Loc是主键)

ID  LOC RNK NBR1 NBR2 
1   2   A   10   b --->
3   4   A   10   b --->
5   6   A   11   C
8   2   A   12   D
6   3   A   10   b --->

所以我必须根据NBR1和NBR2只获取重复记录,它应该获取所有记录,而不仅仅是重复记录(标记为--->)。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您可以使用子查询

CREATE TABLE #Test (ID int, LOC int, RNK char(1), NBR1 int, NBR2 char(1) )

INSERT INTO #Test VALUES
    (1, 2, 'A', 10, 'b'),
    (3, 4, 'A', 10, 'b'),
    (5, 6, 'A', 11, 'C'),
    (8, 2, 'A', 12, 'D'),
    (6, 3, 'A', 10, 'b')

SELECT *
FROM #Test t1
WHERE EXISTS
    (SELECT 1
     FROM #Test t2
     WHERE t1.NBR1 = t2.NBR1
       AND t1.NBR2 = t2.NBR2
     GROUP BY NBR1, NBR2
     HAVING COUNT(1) > 1)

答案 1 :(得分:0)

您也可以使用此功能,但费用会更高。值大于1的RowsCount是重复的,值1是唯一记录。

With Temp As
(
    Select ID,LOC,RNK,NBR1,NBR2,Row_NUMBER() OVER (PARTITION BY NBR2 ORDER BY NBR1) AS ROWSCOUNT FROM <<TABLE_NAME>>
)

Select * from Temp