sql >> Database >  >> RDS >> Sqlserver

Selecteer nieuwste recordgroep op gebruikersnaam in SQL Server 2008

Je hebt hier verschillende opties, maar met het toevoegen van een ROW_NUMBER gegroepeerd op user en gesorteerd (aflopend) op uw timestamp stelt u in staat om eenvoudig de nieuwste records te selecteren.

ROW_NUMBER gebruiken

SELECT *
FROM   (
         SELECT ID, voting_ID, username, timestamp, XMLBallot
                , rn = ROW_NUMBER() OVER (PARTITION BY voting_ID, username ORDER BY timestamp DESC)
         FROM   Ballots
       ) bt 
WHERE  rn = 1

Als alternatief kunt u de maximale tijdstempel per gebruiker selecteren en daarop aansluiten.

MAX gebruiken

SELECT bt.ID, bt.voting_ID, bt.username, bt.timestamp, bt.XMLBallot
FROM   Ballots bt
       INNER JOIN (
          SELECT username, voting_ID, timestamp = MAX(timestamp)
          FROM   Ballots
          GROUP BY
                 username, voting_ID
        ) btm ON btm.username = bt.Username
                 AND btm.voting_ID = bt.voting_ID
                 AND btm.timestamp = bt.timestamp


  1. Ontdekking en classificatie van SQL-gegevens

  2. Recordset gesloten na uitvoering van opgeslagen procedure

  3. Bulk_update_mappings gebruiken in SQLAlchemy om meerdere rijen met verschillende waarden bij te werken

  4. Meerdere rijen in een enkele rij en combineer kolom SQL