2016-08-12 4 views
0

Jedes Mal, wenn ich 'Count()' verwendet habe, um die doppelten PointIDs für die Abfrage zu zählen, erhalte ich diesen Fehler.Erwartetes lexikalisches Element nicht gefunden

Ich habe das Problem eingegrenzt ist mit Count() -Funktion, verwendet MAX() mit Group von und hatte kein Problem. Dies ist in der Access-Datenbank, die mit ODBC-Verbindung gefüllt ist. All die Hilfe wird geschätzt - ich habe alle Nachforschungen angestellt und dies ist mein letzter Online-Urlaubsort.

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

Antwort

0

Ich vermute, Sie tatsächlich alle doppelten Datensätze zurückgeben möchten, die ein 2-Schritt-Betrieb ist.

Schritt 1 die IDs erhalten finden, die 2

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

Schritt dieses Ergebnis kommen zurück auf die ursprüngliche Tabelle dupliziert werden die Datensätze

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

Schritt 1 funktioniert ziemlich gut zu finden - gibt mir die Zählungen aber Schritt 2 gibt den NumOfRecords col nicht zurück. Es macht nur den ganzen Datensatz von den ursprünglichen Daten blind. Danke für all deine Hilfe und Zeit. Grüße, -aK> – abiyek

+0

Ja, es sah so aus, als wolltest du die Aufzeichnungen selbst haben. Sie können NumOfRecords in Schritt 2 einfach hinzufügen, es wird nur ein wiederholter Wert für jede der tatsächlichen Zählungen sein, also in Schritt 2 nur anhängen, D.NumOfRecords zu SELECT e. * -Zeile, so liest es SELECT e. *, d.NumOfRecords – Matt

0

Dies ist die Standard-Syntax für das, was Sie tun möchten:

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