删除唯一条目

时间:2013-12-18 03:17:43

标签: ms-access ms-access-2010

我正在使用ACCESS 2010中的医院数据集,该数据集具有由患者编号识别的记录。我有大约200,000名独特患者的350,000个参赛作品。我想删除所有那些只出现一次或两次的患者,并在新表中保留所有入院患者至少3次入院的患者。我需要结果表每个患者有多行(即每次入院一行),而不是只有一行显示出现次数。

2 个答案:

答案 0 :(得分:1)

根据您的描述,我得到了您已经知道如何创建GROUP BY查询的印象,该查询显示哪些患者有超过2个入院记录:

SELECT [patient number], Count(*)
FROM Admissions
GROUP BY [patient number]
HAVING Count(*) > 2;

但问题是,您希望查看这些患者的完整记录,而不仅仅是每位患者的记录数。

因此,您可以将GROUP BY查询用作INNER JOIN返回Admissions表的子查询。效果是将Admissions行仅过滤为GROUP BY返回的患者。

SELECT a.*
INTO NewTable
FROM
    Admissions AS a
    INNER JOIN
    (
        SELECT [patient number]
        FROM Admissions
        GROUP BY [patient number]
        HAVING Count(*) > 2
    ) AS sub
    ON a.[patient number] = sub.[patient number];

我知道您希望将数据存储在新表中。如果我误解了您的意图,并且您只想显示数据,请从该查询中删除INTO NewTable

答案 1 :(得分:0)

我不知道您的数据/表格结构是什么,但尝试使用此声明

SELECT *
FROM [Patient]
WHERE PatNumber IN (SELECT PatNumber FROM [Patient] GROUP BY PatNumber HAVING  COUNT(PatNumber) > 2)