2010-10-27 30 views
1

如果重複的名稱超過6,並且同一名稱有6個不同的地址,則我不希望將它們輸出到KeepThese表:將記錄放在沒有6個或更多不同地址的新表中

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」 但是,這是最好的,我可以拿出。

+0

您現有的查詢不起作用,因爲在subselect中,您已將別名替換爲「NamesToReject」不包含其SELECT語句中的ID字段。 – 2010-10-27 21:13:31

回答

0

如何:

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 

到目前爲止,少於6相同名稱的任何名稱和地址組合將被顯示。

如果添加了這個下一個語句,每個名稱中只有一個會顯示,並且隨機選擇該名稱的一個地址。

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")) 
+0

感謝您的回覆。它說「從子句中的語法錯誤」 – JohnMerlino 2010-10-27 14:39:55

+0

糟糕,短一個括號。現在就試試。 – Fionnuala 2010-10-27 14:48:18

+0

感謝您的回覆。它說「標準表達式中的數據類型不匹配」。 – JohnMerlino 2010-10-27 15:02:54