Announcement

Collapse
No announcement yet.

Maximum in einer Gruppierung anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Maximum in einer Gruppierung anzeigen

    Hallo,
    ich befasse mich seit kurzem mit Microsoft SQL2005 und möchte folgendes realisieren. Ich habe eine Tabelle mit Rechnername, Benutzername und letzten Login.

    Auf einem Rechner können mehrere Benutzer eingeloggt gewesen sein, d.h. hier ist entscheidend dass bei der Ausgabe immer nur der letzte Benutzer ausgewiesen wird.

    Anbei eine Beispieltabelle (fett markiert sind die Positionen, die ausgegeben werden sollten)

    Rechnername| Benutzer| Letzer Login
    PC001 Christian Fuchs 24.02.2008 14:53
    PC001 Peter Maier 25.02.2008 14:53
    PC002 Amelie Schmidt 22.02.2008 13:31
    PC002 Kurt Schmidt 14.02.2008 13:31
    PC002 Karl Friedrichs 24.02.2007 13:31
    PC002 Peter Müller 25.02.2008 13:31
    PC003 Andreas Schneider 26.02.2008 13:31
    PC003 Fritz Karl 03.04.2008 15:21
    Wenn ich die MAX-Funktion auswähle, wird lediglich die letzte Loginzeit ausgegeben, jedoch nicht auf die verschieden Rechner.

    Beispiel:
    Als Ergebnis müsste herauskommen:
    PC001 |Peter Maier|25.02.2008 14:53
    PC002 |Peter Müller|25.02.2008 13:31
    PC003 |Fritz Karl|03.04.2008 15:21
    ...

    Hat jmd eine Idee wie man das realisieren könnte?

    Vielen Dank vorab!

    Anbei mein SQL Statement:

    SELECT DISTINCT userid, wFullName, wLastLogon,
    (SELECT MAX(wLastLogon) AS 'MAX'
    FROM rWin32_NetworkLoginProfile) AS Expr1
    FROM rWin32_NetworkLoginProfile AS rWin32_NetworkLoginProfile_1

  • #2
    Wenn schon gruppieren, dann richtig:

    Code:
    SELECT userid, wFullName, MAX(wLastLogon) 
    FROM rWin32_NetworkLoginProfile 
    GROUP BY  userid, wFullName

    Comment


    • #3
      @Ebis - vielen Dank schonmal.
      Nun erhalte ich ja den Rechnername mit den zuletzt eingeloggten Usern und deren Loginzeiten.

      Vorher:
      PC001 Christian Fuchs 24.02.2008 14:53
      PC001 Peter Maier 23.02.2008 09:53
      PC001 Peter Maier 24.02.2008 15:53
      PC001 Peter Maier 24.02.2008 15:54

      Da "Peter Maier" den zuletzt eingeloggten Benutzer darstellt darf soll auch nur dieser mit der letzten Zeit ausgegeben werden.

      D.h. als Ergebnis soll für jedes Gerät der zuletzt eingeloggte Benutzer und dessen Loginzeit ausgegeben werden. Alle anderen eingeloggten Benutzer auf dieser Maschine sollen nicht ausgegeben werden.

      Beispiel hier:
      PC001 Peter Maier 24.02.2008 15:54


      Wenn man jetzt allerdings nur den letzten Eintrag pro Rechnername haben möchte, wie könnte man das realisieren?

      Comment


      • #4
        ein bissel komplizierte ist es doch:
        Code:
        CREATE TABLE #TEmp (PC NVarCHAR (10), Fullname NVarCHAR (100), LoginTime DateTime);
        INSERT INTO  #TEmp VALUES (N'PC001',N'Christian Fuchs', CONVERT (DATETIME, '24.02.2008 14:53:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC001',N'Peter Maie', CONVERT (DATETIME, '25.02.2008 14:53:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC002',N'Amelie Schmidt', CONVERT (DATETIME, '22.02.2008 13:31:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC002',N'Kurt Schmidt', CONVERT (DATETIME, '14.02.2008 13:31:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC002',N'Karl Friedrichs', CONVERT (DATETIME, '24.02.2007 13:31:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC002',N'Peter Müller', CONVERT (DATETIME, '25.02.2008 13:31:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC003',N'Andreas Schneider', CONVERT (DATETIME, '26.02.2008 13:31:00', 104));
        INSERT INTO  #TEmp VALUES (N'PC003',N'Fritz Karl', CONVERT (DATETIME, '03.04.2008 15:21:00', 104));
        
        SELECT T.PC, T.FullName, T.LoginTime 
        FROM #TEMP AS T
        JOIN  (SELECT	  PC,  MAX(LoginTime) AS LT
        	   FROM	     #Temp
        	   GROUP BY  PC) AS X ON x.PC = T.PC AND x.LT = T.LoginTime;
        
        DROP TABLE #TEMP
        das Select bringt dann das Ergebnis:

        PC FullName LoginTime
        ---------- -------------------- -----------------------
        PC003 Fritz Karl 2008-04-03 15:21:00.000
        PC002 Peter Müller 2008-02-25 13:31:00.000
        PC001 Peter Maie 2008-02-25 14:53:00.000

        Comment


        • #5
          Vielen lieben Dank, du hast mir sehr weitergeholfen!

          Comment

          Working...
          X