2014-10-17 3 views
2

코스의 마지막 등록 날짜를 얻으려고하고 있지만 id thar 레코드를 알고 싶습니다. MAX는 함수이기 때문에 결과가 매우 다르기 때문에 그룹을 id으로 사용해야합니다. 결과는 매우 다릅니다 (id 당 레코드 하나에서부터 각 레코드까지).(SQL)에 의해 그룹에없는 열이있는 함수 결과를 얻을 수 있습니까?

SELECT id, MAX(registration_date) AS registration_date 
FROM courses 
GROUP BY id; 

그리고 나는 원하지 않는다 : 그것은 오류를주고 내가이 그것을 방지하기 위해 수행해야하기 때문에이

SELECT id, MAX(registration_date) AS registration_date 
FROM courses; 

을? : 같은 쿼리를 관리 할 수있는 방법입니다

마지막 결과.

답변

0

당신은 그의 rank() 윈도우 기능을 사용할 수 있습니다이 더 반환 할 수 있습니다 일치

select * 
from [dbo].[Courses] 
where registration_date = 
(select max(registration_date) 
from [dbo].[Courses]) 

하지만, 단지 날짜 :

SELECT id 
FROM (SELECT id, RANK() OVER (ORDER BY registration_date DESC) AS rk 
     FROM courses) 
WHERE rk = 1 
+0

감사합니다. 그것이 내가 원하는 것입니다. – forvas

0

한 가지 방법은 다음과 같이 하위 쿼리를 사용하는 것입니다 하나의 기록보다. 가능하면 where 절에 필드를 추가하여 범위를 좁히십시오.

+1

Postgres (또는 표준 SQL)에 유효한 SQL이 아닙니다. –

관련 문제