2016-07-04 5 views
0

См. Нижеприведенный скрипт, чтобы найти дубликаты в SQL Server DB. Есть ли более чистый способ?Uisng существует в sql, чтобы найти дубликаты, есть ли более чистый способ?

select itemnum 
from matusetrans a 
where exists (select null 
       from matusetrans b 
       where a.itemnum = b.itemnum 
       and a.actualdate = b.actualdate 
       and a.matusetransid != b.matusetransid 
       and (a.rotassetnum = b.rotassetnum 
        or (a.rotassetnum is null and b.rotassetnum is null))  
       and a.quantity = b.quantity) 
group by itemnum 
+0

Уточнитните "дубликаты" ясно. Вы имеете в виду две записи, где совпадают все столбцы в строке? – Mfusiki

+0

Привет, Mfusiki, да дубликаты, где критерии в совпадении кода и число> 1. –

+0

. Пожалуйста, обратитесь к этой теме: http://stackoverflow.com/questions/2594829/finding-duplicate-values-in-a-sql -table – Mfusiki

ответ

0

Другая возможность (но необязательно из "чистых") может быть

WITH cte AS(
    SELECT columns, ROW_NUMBER() OVER (PARTITION BY columns ORDER by columns) AS RowIdx 
    FROM matusetrans 
    GROUP BY columns 
) 
SELECT * 
    FROM cte 
    WHERE RowIdx > 1 
1

Вы можете попробовать:

SELECT itemnum 
FROM matusetrans 
GROUP BY [ColumnNames] 
HAVING 
COUNT(*) > 1 
1

Предполагая, что вы хотите, чтобы найти дубликат itemnum в таблице, пожалуйста, используйте ниже запрос

SELECT itemnum 
FROM matusetrans 
GROUP BY [ItemNum] 
HAVING COUNT(ItemNum) > 1 

Использование HAVING COUNT(*) > 1 может дать вам результат, как и все различны, если есть любые столбцы Datetime, такие как порядок datetime, который обычно изменяется для каждой записи.

Спасибо, Sree