2016-08-12 5 views
0

Каждый раз, когда я использовал 'Count()' для подсчета дубликатов PointIDs 'в запросе, я получаю эту ошибку.Ожидаемый лексический элемент не найден

Я сузил проблему с функцией Count(), использовал MAX() с группой и не имел никаких проблем. Это база данных доступа, заполненная с использованием ODBC-соединения. Вся помощь аппроксимирована - я провел все исследования, и это мой последний онлайн-курорт.

SELECT Event1.PointID, Event1.LogTimeStamp, Count(Event1.PointID) AS acount 
FROM Event1 
GROUP BY Event1.PointID, Event1.LogTimeStamp; 

ответ

0

Я подозреваю, что вы на самом деле хотите, чтобы вернуть все повторяющиеся записи которых является операция 2 шага.

Шаг 1 получают найти идентификаторы, которые дублируются

SELECT Event1.PointID, Count(*) AS NumOfRecords 
    FROM Event1 
    GROUP BY Event1.PointID 
    HAVING COUNT(*) > 1 

Шаг 2 присоединиться к этому результату обратно к исходной таблице, чтобы найти записи

SELECT e.*, d.NumOfRecords 
FROM 
    Event1 e 
    INNER JOIN (
     SELECT Event1.PointID, Count(*) AS NumOfRecords 
     FROM Event1 
     GROUP BY Event1.PointID 
     HAVING COUNT(*) > 1 
    ) d 
    ON e.PointId = d.PointId 
+0

Шаг 1 работает довольно хорошо - дает мне отсчеты но шаг 2 не возвращает номер NumOfRecords. Это просто заглушает всю запись из исходных данных. Спасибо за вашу помощь и время. С уважением, -aK> – abiyek

+0

да, похоже, вы хотели, чтобы записи сами. вы можете добавить NumOfRecords в шаге 2, это просто будет повторяющимся значением для каждого из фактических счетчиков, поэтому на шаге 2 просто добавьте d.NumOfRecords в строку SELECT e. *, чтобы он читал SELECT e. *, d.NumOfRecords – Matt

0

Это стандартный синтаксис для того, что вы хотите сделать:

SELECT Event1.PointID, Event1.LogTimeStamp, Count(*) AS acount 
FROM Event1 
GROUP BY Event1.PointID, Event1.LogTimeStamp; 
Смежные вопросы