Помещение записей в новую таблицу, которые не имеют 6 или более разных адресов для одного и того же имени - PullRequest
1 голос
/ 27 октября 2010

Если повторяющихся имен больше 6, и для одного и того же имени существует шесть разных адресов, я не хочу выводить их в таблицу KeepThese:

harry baker 1 street
harry baker 2 street
harry baker 3 street
harry baker 4 street
harry baker 5 street
harry baker 6 street
donald ross 11th street

Так что Гарри Бэйкер должен бытьисключен из новой таблицы.Дональд Росс должен быть включен в новую таблицу.

Это существующий запрос, который у меня есть:

SELECT F.* INTO KeepThese
FROM final_output AS F 
INNER JOIN (SELECT DISTINCT F.fullName FROM final_output 
AS F LEFT JOIN (SELECT fullName FROM final_output 
AS F GROUP BY fullName HAVING COUNT(*) >=6)  
AS NamesToReject ON NamesToReject.fullName = F.fullName WHERE NamesToReject.ID IS NULL)  
AS NamesToKeep ON NamesToKeep.fullName  = F.fullName;

Возвращает «Введите значение параметра NamesToReject.ID», но это лучшее, что я могу придумать.

1 Ответ

0 голосов
/ 27 октября 2010

Как насчет:

SELECT *
FROM final_output AS f 
LEFT JOIN (
     SELECT t.fullname 
     FROM final_output AS t 
     GROUP BY t.fullname 
     HAVING Count(t.fullname)>=6)  AS Ex 
ON f.fullname=Ex.fullname
WHERE Ex.fullname Is Null

До этого момента будет отображаться любая комбинация имени и адреса, содержащая менее шести одинаковых имен.

Если добавляется следующий оператор,только одно из каждого имени будет показано с одним адресом для этого имени, выбранным случайным образом.

AND Nz([address],"None") In (
     SELECT TOP 1 Nz(address,"None") 
     FROM  final_output t 
     WHERE t.fullname = f.fullname 
     ORDER BY fullname, Nz(address,"None") )
...