2013-12-18 8 views
1

Я работаю с больничным набором данных в ACCESS 2010, который имеет записи, идентифицированные по номеру пациента. У меня 350 000 записей из 200 000 уникальных пациентов. Я хочу УДАЛИТЬ всех тех пациентов, которые появляются только один или два раза, и СОЗДАЙТЕ в новой таблице все записи для пациентов, которые имеют как минимум 3 приема. Мне нужна результирующая таблица, чтобы иметь несколько строк на одного пациента (т. Е. Одну строку за вход), а не только одну строку с указанием количества выступлений.Удаление уникальных записей

ответ

0

Я не знаю, что ваши данные/структура таблицы, но пробуйте это форма ЗАЯВЛЕНИЕ

SELECT * 
FROM [Patient] 
WHERE PatNumber IN (SELECT PatNumber FROM [Patient] GROUP BY PatNumber HAVING COUNT(PatNumber) > 2) 
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 из этого запроса.

Смежные вопросы