首先不必列出exists子句中的所有列,只需将它们替换为任何固定值,因为您正在寻找行的存在而不是寻找返回列值
由于问题不是很清楚,我根据您可能要求的案例提供了许多建议:
1) 如果您希望获得基于 IDNUMBER 和 ActionDateTime 的重复项
选择 * 从 (
SELECT DISTINCT ActionDateTime, [Action Location], FirstName, MiddleName, LastName,
IDNumber, IDNumber2, IDNumber3, Department, CardData_BadgePass, Location, Birthdate
,COUNT(ActionDateTime) OVER(PARTITION BY ActionDateTime,IDNUMBER) AS [ItemCount]
FROM dbo.EmployeeEntityTracking AS t
WHERE EXISTS (SELECT 1
FROM dbo.EmployeeEntityTracking AS x
WHERE (x.IDNumber = t.IDNumber) AND (x.ActionDateTime <> t.ActionDateTime))) AS T1
WHERE T1.ItemCount > 1
ORDER BY T1.ActionDateTime
2) 如果我了解您要查找的内容,您可以使用DISTINCT 函数根据所有列消除重复项
SELECT DISTINCT ActionDateTime, [Action Location], FirstName, MiddleName, LastName,
IDNumber, IDNumber2, IDNumber3, Department, CardData_BadgePass, Location, Birthdate
FROM dbo.EmployeeEntityTracking AS t
WHERE EXISTS (SELECT 1
FROM dbo.EmployeeEntityTracking AS x
WHERE (x.IDNumber = t.IDNumber) AND (x.ActionDateTime <> t.ActionDateTime))
3) 如果您正在寻找具有相同重复日期的行
SELECT * FROM (
SELECT DISTINCT ActionDateTime, [Action Location], FirstName, MiddleName, LastName,
IDNumber, IDNumber2, IDNumber3, Department, CardData_BadgePass, Location, Birthdate
,COUNT(ActionDateTime) OVER(PARTITION BY ActionDateTime) AS [DateCount]
FROM dbo.EmployeeEntityTracking AS t
WHERE EXISTS (SELECT 1
FROM dbo.EmployeeEntityTracking AS x
WHERE (x.IDNumber = t.IDNumber) AND (x.ActionDateTime <> t.ActionDateTime))) AS T1
WHERE T1.DateCount > 1
ORDER BY T1.ActionDateTime
4) 如果您希望消除所有包含相同日期的行:
SELECT * FROM (
SELECT DISTINCT ActionDateTime, [Action Location], FirstName, MiddleName, LastName,
IDNumber, IDNumber2, IDNumber3, Department, CardData_BadgePass, Location, Birthdate
,COUNT(ActionDateTime) OVER(PARTITION BY ActionDateTime) AS [DateCount]
FROM dbo.EmployeeEntityTracking AS t
WHERE EXISTS (SELECT 1
FROM dbo.EmployeeEntityTracking AS x
WHERE (x.IDNumber = t.IDNumber) AND (x.ActionDateTime <> t.ActionDateTime))) AS T1
WHERE T1.DateCount < 2
ORDER BY T1.ActionDateTime