title: SQL Get Only Most Recent Record for A User
body: <p>I have a situation where I need to write a sql query to get all of the most recent responses for a student in a classroom. I basically want to show just their most recent response, not all of their responses. I have the query to get all of the responses and order them, however I can't figure out the part where it only grabs that user's most recent record.</p>
  
  <p>Below is the query I have to this point. You can see from the sample data in the image it is pulling back all responses. What I basically want is either just the most recent for a particular student OR possibly just showing the max attempt for a particular Lesson/Page number combo. I have tried playing around with partition and group bys but I haven't found the right combination yet. </p>
  
  <pre><code>SELECT U.UserName, C.Name AS 'ClassroomName', U.FirstName, U.LastName, L.Name AS 'LessonName', P.PageNumber, R.Attempt, R.Created
  FROM Responses R
  INNER JOIN ClassroomUsers CU ON CU.UserId = R.UserId
  INNER JOIN Classrooms C ON C.Id = CU.ClassroomId
  INNER JOIN Questions Q ON Q.Id = R.QuestionId
  INNER JOIN Pages P ON P.Id = Q.PageId
  INNER JOIN Lessons L ON L.Id = P.LessonId
  INNER JOIN AspNetUsers U ON U.Id = CU.UserId
  WHERE CU.ClassroomId IN (
      SELECT CU.ClassroomId
      FROM ClassroomUsers CU
      WHERE CU.UserId = @UserId
  )
  ORDER BY R.Created DESC
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/coEXU.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/coEXU.png" alt="enter image description here"></a></p>