Я использую VS2005 C # и SQL Server 2005. Я хочу сформировать SQL-запрос со следующим условием:
Проверить наличие дублированного пользователя в Table1 tb1 где tb1 имеет более одного [Emp.Name]
EDIT :
Проще говоря, если я проверяю только дубликаты для [emp name]
нет, я не могу выбрать [employeeID]
?
Потому что, если я использую
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
, я не смогу увидеть дубликаты [emp name]
вставленных строк.
Однако, если я использую
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
Я могу получить дубликаты [emp name]
, но без [employeeID]
.
РЕДАКТИРОВАНИЕ:
Работа над этими 2 запросами при условии Зохалиб и Михал Повага соответственно:
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
Ошибка: Столбец 2 для 's2
* не указан1047 *
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]
Ошибка: *Ambiguous column name '[Emp name]'
Буду признателен за любую помощь, спасибо.