Wählen Sie TOP-20 Verschiedene Zeilen in der Abfrage
Ich protokollieren von Aktionen der Benutzer in einer Tabelle mit einer Datum-Stempel.
Jedes mal, wenn ein Benutzer in ein Projekt geht, meldet es sich, dass Sie betrachtet das Projekt und Stempel der datetime.
Möchte ich die TOP-20 Projekte, die der Benutzer zuletzt gelaufen.
Dies ist, was ich habe, so weit:
SELECT DISTINCT TOP (20) Users_Tran_ID
FROM App_UserLog
WHERE (Users_ID = 'ADMIN') AND (Users_Transaction LIKE 'Permit Viewed%')
ORDER BY App_UserLog.Users_LogDate DESC
Das problem ist, ich will nicht die Users_LogDate in meine Ausgabe, wie ich brauche, EINZIGARTIGE Users_Tran_ID.
Wenn ich entfernen Sie die Users_LogDate aus dem SELECT bekomme ich die folgende Fehlermeldung:
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Hier ist die grundlegende und wählen Sie Ergebnismenge, die ich bekomme. Ich will nur die deutliche Users_Tran_ID und nur die TOP 20.
ADMIN Permit Viewed B2011-0012 2013-08-29 17:35:04.000
ADMIN Permit Viewed B2011-0012 2013-08-29 17:29:09.000
ADMIN Permit Viewed B2006-0043 2013-08-29 17:29:05.000
ADMIN Permit Viewed B2011-0012 2013-08-29 17:28:49.000
ADMIN Permit Viewed B2008-0167 2013-08-29 17:17:13.000
ADMIN Permit Viewed B2006-0043 2013-08-29 17:17:08.000
ADMIN Permit Viewed B2011-0012 2013-08-29 17:16:55.000
ADMIN Permit Viewed B2011-0012 2013-08-29 17:16:45.000
ADMIN Permit Viewed B2011-0012 2013-08-29 17:16:38.000
ADMIN Permit Viewed B2007-0478 2013-08-29 17:16:32.000
ADMIN Permit Viewed B2011-0012 2013-08-29 11:39:59.000
ADMIN Permit Viewed B2007-0478 2013-08-29 11:22:05.000
ADMIN Permit Viewed B2007-0478 2013-08-29 11:22:03.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:23:17.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:21:58.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:20:41.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:20:37.000
ADMIN Permit Viewed B2007-0478 2013-08-29 10:18:01.000
ADMIN Permit Viewed B2007-0478 2013-08-29 10:17:58.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:17:54.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:01:50.000
ADMIN Permit Viewed B2011-0012 2013-08-29 10:01:48.000
ADMIN Permit Viewed B2007-0478 2013-08-29 09:56:32.000
ADMIN Permit Viewed B2007-0478 2013-08-29 09:53:31.000
ADMIN Permit Viewed B2007-0478 2013-08-29 09:53:27.000
ADMIN Permit Viewed ENG2012-0141 2013-08-15 12:51:09.000
ADMIN Permit Viewed ENG2012-0141 2013-08-15 12:51:07.000
ADMIN Permit Viewed BLD2012-0094 2013-08-13 12:01:39.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:34.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:28.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:24.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:21.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:13.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:09.000
ADMIN Permit Viewed ENG2013-0047 2013-08-05 10:40:07.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:55.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:50.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:46.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:40.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:33.000
ADMIN Permit Viewed ENG2012-0141 2013-08-05 10:37:31.000
ADMIN Permit Viewed BLD2012-0919 2013-08-05 10:27:21.000
ADMIN Permit Viewed BLD2012-0919 2013-08-05 10:27:17.000
ADMIN Permit Viewed ENG2012-0119 2013-08-05 10:26:51.000
ADMIN Permit Viewed ENG2012-0119 2013-08-05 10:26:48.000
Wie kann ich dies tun?
- Ist die Transaktions-ID pro Projekt? Ich sehe Sie nicht identifizieren ein Projekt in deiner Abfrage?
- Die Users_Tran_ID enthält die PROJEKT-Nummer, die ich brauche. Meine top-line werde ich Bearbeiten, ich muss echt nur Users_Tran_ID in meine endgültige Ergebnis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie verwenden möchten
group by
eher alsdistinct
:Mit aggregation können Sie dann angeben, dass Sie möchten, um der durch die jüngsten logdate. Voila, das sollte tun, was Sie wollen.
as a
Namen der Unterabfrage. Jetzt mit @FabienTheSolution 's Fiddle, um mir das Ergebnis scheint ok. Sie nicht sagen, was ist der Unterschied zwischen dem Ergebnis, produziert von diesem Vorschlag und dem Ergebnis, das Sie erwarten.Sind Sie auf der Suche nach so etwas wie dieses :
Sehen SQLFIDDLE