2016-08-07 52 views
0

Ich habe Probleme mit GROUP BY in MS Access.Fehler, wenn GROUP BY Parameter geändert werden

Frage: Als ich „tcount, Benutzer-ID, ttext“ von der Linie GROUP BY entfernen bekomme ich einen Fehler: tcount „als Teil einer Aggregatfunktion‚

‘Ihre Abfrage nicht den angegebenen Ausdruck enthält“

Die Abfrage:

Select TCODE, Tcount, Userid, TTEXT 
From Sap_Security_Log 
Group by Tcode,tcount, userid, ttext 

Die Ergebnisse: enter image description here

Was ich will: GROUP BY TCODE, zB Ergebnismenge:

TCODE TCOUNT USERID TTEXT 
SESS  13 USER-001 
SESS  8  USER-003 
SESS  1  USER-002 
...  ... ... 
+0

Ich sehe nicht, was die gewünschten Ergebnisse mit den Daten zu tun haben. Die Anzahl für "Sess" sollte basierend auf den in der Frage sichtbaren Daten mindestens 13 sein. –

Antwort

0

Sie wählen jetzt alle Spalten aus, anstatt die gewünschten Werte zu zählen. Versuchen Sie, die folgende Abfrage

Select TCODE, Sum(Tcount), Userid, TTEXT 
From Sap_Security_Log 
Group by Tcode, userid, ttext 

Das die Tzählen fasst für alle Zeilen in dem alle Werte in den Spalten in der ‚Gruppe von‘ gleich sind. Beachten Sie, dass die Spalte Tcount nicht in der Gruppe nach ist.

0

Versuchen: Ihre Abfrage sollte wie:

Select TCODE, Tcount, Userid, TTEXT 
    From Sap_Security_Log 
    Group by Tcode,Tcount,Userid,Ttext; 

Oder wenn Gruppen wollen von Tcount :

Select TCODE, Sum(Tcount) As Count, Userid, TTEXT 
    From Sap_Security_Log 
    Group by Tcode; 

Viel Glück.

1

In Ihrer vorherigen Frage mit etwas anderen Abfrage How to get top 10 and ORDER BY() from COUNT() bezüglich der gleichen Datenbank schlug ich vor, eine andere Abfrage zu verwenden. (Es wäre nett, wenn du eine Antwort akzeptierst, selbst wenn diese Antwort nicht meine ist, solange sie deine Frage beantwortet hat.)

Die von mir vorgeschlagene Abfrage kann leicht an deine Bedürfnisse angepasst werden.

SELECT userid, COUNT(tcode) as transactions_count 
FROM sap_security_log 
GROUP BY userid 
ORDER BY transactions_count DESC LIMIT 10 
  • Sie können tcode zum GROUP BY Ausdruck hinzufügen, so dass Sie GROUP BY tcode, userid haben.
  • Sie werden wahrscheinlich die ORDER BY Ausdruck zu etwas relevanter ändern. Ich schlage vor, Sie ORDER BYtcode und dann transactions_count
  • Keine Notwendigkeit für LIMIT 10 mehr, da Sie wahrscheinlich für alle Ergebnisse, nicht nur 10 suchen.

Diese dem folgenden Code führen würde:

SELECT userid, tcode, COUNT(tcode) as transactions_count 
FROM sap_security_log 
GROUP BY tcode, userid 
ORDER BY tcode, transactions_count DESC 

, die Sie im folgenden Arbeits Beispiel betrachten: http://sqlfiddle.com/#!9/016f93/1