I want to do query as below. Query is wrong but describes my intentions.
SELECT name, dateTime, data
FROM Record
WHERE dateTime = MAX(dateTime)
Update: Ok. The query describes intentions not quite good. My bad.
I want to select latest record for each person.
I like Miky’s answer and the from Quassnoi (and upvoted Miky’s) but, if your needs are similar to mine, you should keep in mind some limitations. First and most importantly, it only works if you are looking for the latest record overall or the latest record for a single name. If you want the latest record for each person in a set (one record per person but the latest record for each) then the above solutions fall short. Second, and less importantly, if you’ll be working with large datasets, might prove a bit slow over the long run. So, what is the work-around?
What I do is to add a bit field to the table marked “newest.” Then, when I store a record (which is done in a stored procedure in SQL Server) I follow this pattern:
Also, there is an index on Name and Newest to make Selects very fast.
Then the Select is just:
A select for a group will be something like:
If the records may not be entered in date order, then your logic is a little bit different:
The rest stays the same.