get latest record for each ID

前端 未结 3 1471
甜味超标
甜味超标 2021-01-28 01:16

I would like to get the latest record for each server.

Here is some example data:

TimeGenerated        SourceName            ComputerName  Message
2014-1         


        
相关标签:
3条回答
  • 2021-01-28 01:44

    I you only use a GROUP function, you can only display the columns which are part of that SELECT statement. If you need more data displayed, you need to work with a subquery. For example, if you want to "select *", you can't just use only a GROUP BY and no subquery. So, it depends what you want to display.

    0 讨论(0)
  • 2021-01-28 01:49

    Try this:

    SELECT ComputerName, Max(date)
    FROM TABLE
    GROUP BY ComputerName
    
    0 讨论(0)
  • 2021-01-28 02:02
    SELECT *
    FROM yourtable
    INNER JOIN (
       SELECT MAX(timeGenerated) as maxtime, ComputerName
       FROM yourtable
       GROUP BY ComputerName
    ) AS latest_record ON (yourtable.timeGenerated = maxtime)
       AND (latest_record.ComputerName = yourtable.ComputerName)
    

    Inner query gets the latest timestamp for every computer name. The outer query then joins against that query result to fetch the rest of the fields from the table, based on the time/computername the inner query finds. If you have two events logged with identical max times, you'd get two records for that computername.

    0 讨论(0)
提交回复
热议问题