2017-11-28 1 views
0

의 이름으로 그룹을에, 나는최신 레코드를 그룹화하려면 어떻게합니까?

name  time_stamp    quantity 
John  2017-11-28 08:46:01 65 
Clark 2017-11-28 08:44:08 98 
John  2017-11-28 08:50:54 74 

와 내가 필요한 것은 같은 테이블이 상상하고, 최신 레코드에서 데이터를 보자. PC는 John에게 사용해야하는 데이터를 알지 못하므로 이름별로 그룹화 할 수 없습니다. 나는 ..

name  time_stamp    quantity 
Clark 2017-11-28 08:44:08 98 
John  2017-11-28 08:50:54 74 

65 세 기록은 다음 74 있기 때문에 같은 출력을 필요

나는 SELECT name, MAX(time_stamp) AS time_stamp, quantity FROM table1 GROUP BY time_stamp을 시도했지만 그것이 나 때문에 작동하지 않습니다 -

열 'table1.name' 집계 함수 또는 GROUP BY 절에 포함 된 이 아니기 때문에 선택 목록에서 유효하지 않습니다.

답변

2
WITH CTE AS(
    SELECT *, 
      ROW_NUMBER() OVER (PARTITION BY [name] ORDER BY time_stamp DESC) AS RN 
    FROM YourTable) 
SELECT * 
FROM CTE 
WHERE RN = 1; 
0

당신은 최대 (TIME_STAMP)를 선택하는 파생 테이블을 사용할 수 있습니다.

SELECT T1.* 
    FROM (
     SELECT [name] 
       ,MAX(time_stamp) AS MAXtime_stamp --MAX time_stamp by name 
      FROM table1 
     GROUP BY [name] 
     ) AS dT INNER JOIN table1 T1 ON dT.MAXtime_stamp = T1.time_stamp 
            AND dT.[name] = T1.[name] 
관련 문제