SQL Check pour le nom d'user en double dans le tableau

J'utilise VS2005 C # et SQL Server 2005. Je veux former une requête SQL avec la condition suivante:

Vérifiez l'user dupliqué dans Table1 tb1tb1 a plus d'un [Emp.Name]

EDITER :

Dire simplement, si je ne vérifie que la doublon pour [emp name] , je ne peux pas sélectionner [employeeID] ?

Parce que si j'utilise

 INSERT INTO DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) SELECT tb1.EmployeeID, tb1.[Emp Name], 'Active', 'Duplicated user in Table1' FROM Table1 tb1 GROUP BY tb1.[employeeID], tb1.[emp name] HAVING COUNT(tb1.[emp name]) >1 

Je ne pourrai pas voir les lignes dupliquées [emp name] insérées.

Cependant, si j'utilise

 INSERT INTO DuplicateUserInTb1([Emp Name], Status, Issue) SELECT tb1.EmployeeID, tb1.[Emp Name], 'Active', 'Duplicated user in Table1' FROM Table1 tb1 GROUP BY tb1.[emp name] HAVING COUNT(tb1.[emp name]) >1 

Je suis capable de récupérer le doublon [emp name] , cependant, sans [employeeID] .


ÉDITÉ:

Travaillant sur ces 2 requêtes fournies par Zohalib et Michal Powaga respectivement:

  INSERT INTO DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) select t.emp_id, t.empname, t.active, t.du from (select s1.emp_id, s1.empname,'Active' as active, 'Duplicate User' as du, ROW_NUMBER() OVER (PARTITION BY s1.empName ORDER BY s1.empName) as rowNum from table s1, (select emp_name, count(*) from table group by emp_name having count(*) > 1) s2 where s1.emp_name = s2.emp_name ) t where t.rowNum = 1 

Erreur: Aucune colonne n'a été spécifiée pour la colonne 2 de 's2


 insert into DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) select employeeID, [emp name], 'Active', 'Duplicated user in Table1' from Table1 t1 join ( select [emp name] from Table1 group by [emp name] having count(*) > 1 ) t on t1.[emp name] = t.[emp name] 

Erreur: * Ambiguous column name '[Emp name]'


J'apprécierais toute aide, merci.

Lorsque vous utilisez la clause Group By, votre clause select ne peut contenir que des colonnes

qui sont soit mentionnés dans la clause group by

Ou des fonctions d'agrégation, par exemple Count, SUM etc http://www.w3schools.com/sql/sql_groupby.asp

De plus, dans votre requête, vous insérez des valeurs dans trois colonnes, mais votre clause select sélectionne quatre valeurs, cela ne devrait-il pas être un problème?

essayez de suivre la requête pour insert des duplicates basés sur empname

  INSERT INTO DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) select t.emp_id, t.empname, t.active, t.du from (select s1.emp_id, s1.empname,'Active' as active, 'Duplicate User' as du, ROW_NUMBER() OVER (PARTITION BY s1.empName ORDER BY s1.empName) as rowNum from table s1, (select emp_name, count(*) as counts from table group by emp_name having count(*) > 1) s2 where s1.emp_name = s2.emp_name ) t where t.rowNum = 1 
 insert into DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) select t1.employeeID, t1.[emp name], 'Active', 'Duplicated user in Table1' from Table1 t1 join ( select [emp name] from Table1 group by [emp name] having count(*) > 1 ) t on t1.[emp name] = t.[emp name] 

La méthode de Michal Powaga fonctionne. Ajoutez simplement DISTINCT au-dessus de sa solution et tout ira bien.

 insert into DuplicateUserInTb1(EmployeeID, [Emp Name], Status, Issue) select DISTINCT t1.employeeID, t1.[emp name], 'Active', 'Duplicated user in Table1' from Table1 t1 join ( select [emp name] from Table1 group by [emp name] having count(*) > 1 ) t on t1.[emp name] = t.[emp name]