MSSQL - GROUP BY Problem

fabmin
Goto Top
Hallo Zusammen,

ich habe folgendes Problem. Mein Query

SELECT asset.objectID
, acb.AccountName
, MAX(llo.logondate)

FROM [dbo].[SPSComputerClassLogon] llo
INNER JOIN SPSAccountClassBase acb ON acb.id = llo.LoggedAccount
INNER JOIN SPSComputerClassBase comp ON llo.[Expression-ObjectID] = comp.[Expression-ObjectID]
INNER JOIN SPSAssetClassBase asset ON comp.[Expression-ObjectID] = asset.[Expression-ObjectID]

GROUP BY asset.objectid, acb.AccountName
ORDER BY asset.objectid
liefert folgende Liste

objectID AccountName (Kein Spaltenname)
CMP00001 PN00005 2011-01-28 08:12:12.000
CMP00002 PN00005 2011-01-27 06:37:19.000
CMP00003 PN00007 2011-01-26 15:50:44.000
CMP00003 PN00010 2011-01-28 14:11:09.000
CMP00003 PN00009 2011-01-27 15:02:05.000
CMP00004 PN00005 2011-01-19 13:42:10.000
CMP00005 PN00007 2011-01-27 06:58:46.000
CMP00006 PN00002 2011-01-28 08:09:45.000
Ich möchte allerdings erreichen, dass unter der ObjectID (CMP0000X) nur ein AccountName (PN0000X) angezeigt wird und zwar der mit den häufigsten LogOnDate (llo.logondate) der letzten 90Tage. Sollte das nicht möglich sein, dann der AccountName mit dem aktuellste Datum.

Kann mir da vielleicht jemand helfen?



Vielen Dank vorab und Grüße

Fabian

Content-Key: 159936

Url: https://administrator.de/contentid/159936

Ausgedruckt am: 13.08.2022 um 08:08 Uhr

Mitglied: nxclass
nxclass 02.02.2011 um 11:02:48 Uhr
Goto Top
dass unter der ObjectID (CMP0000X) nur ein AccountName (PN0000X)
zwar der mit den häufigsten LogOnDate (llo.logondate)
der letzten 90Tage
SELECT ... COUNT( asset.objectid ) oder meinst Du mit dem letzten LogOnDate ?
...
WHERE llo.logondate > '2011-01-01' - oder eine Berechnung von NOW() - 90 Tagen
GROUP BY acb.AccountName
...
ORDER BY COUNT( asset.objectid ) DESC
LIMIT 1;

ich kenne nur die Funktionen von MySQL - daher kann ich nicht weiter ins Detail gehen.

EDIT:
oder GROUP BY so belassen und auf Limit verzichten - bin mir nicht sicher was Du als Ergebnis willst.
Mitglied: FaBMiN
FaBMiN 02.02.2011 um 11:16:28 Uhr
Goto Top
Hi,
zunächst vielen Dank für die Mühe =)

die Liste besteht aus Computernamen, AD-Accounts und einem Anmeldedatum. Es werden hier alle jemals angemeldeten AD-Accounts pro Computer mit einem Anmeldedatum gelistet.
Ich möchte aus dieser Liste den am häufigsten aufgeführten AD-Account pro Computer
oder den AD-Account pro Computer mit dem aktuellsten Datum

THX!
Mitglied: MadMax
MadMax 02.02.2011 um 12:39:53 Uhr
Goto Top
Hallo Fabian,

probier es mal damit:

Mit dem row_number erzeugst Du Dir die Sortierung, wie Du sie benötigst und nimmst dann immer den ersten Datensatz.

Gruß, Mad Max