2013-04-02 3 views
0

안녕하세요. 알아낼 수없는 질문이 있습니다. 가장 최근의 주석 만 표시된 최종 사용자 항목 (예)을 나열하려고합니다.표시 할 필드 그룹화 가장 최근 날짜

select * from systems where type = "End User Items" group by ID 

을하지만 결과는 여전히 최신 날짜가 표시되지 것입니다 :

ID Name EventDate  Type 
1 PC  12/12/2012 End User Items 
1 PC  11/12/2012 End User Items 
1 PC  10/11/2012 End User Items 
2 Mobile 12/12/2012 End User Items 
2 Mobile 11/01/2012 End User Items 
2 Mobile 12/12/2011 End User Items 
3 Server 12/12/2013 Server 

그래서 나는이 같은 것을 시도 할 것이다. 도움이 될 것입니다.

+0

해당 샘플 입력에 대해 원하는 출력은 무엇입니까? – MarcinJuraszek

+0

최근 코멘트를 보시겠습니까? 코멘트 란 어떤 필드를 참조합니까? –

답변

0

MAX 날짜를 다음과 같이 시도 했습니까?

SELECT Name, 
    MAX(EventDate), 
    Type 
    FROM systems 
    WHERE type = 'End User Items' 
    GROUP BY Name, Type 
0

당신은 ID와 MAX 날짜를 얻을 수있는 하위 쿼리를 사용하고 ID와 MAX 날짜와 시스템 테이블에 다시 가입 할 수 있습니다.

SELECT s2.Name, s.EventDate 
FROM system s2 
INNER JOIN (SELECT ID, MAX(EventDate) EventDate 
      FROM systems 
      WHERE type = 'End User Items' 
      GROUP BY ID) AS s on s2.ID = s.ID AND s2.EventDate = s.EventDate 
0

GROUP BY 필드로 요약하지 않고 표시하려는 열을 정의하십시오. 해당 필드 및 계산 된 요약 함수 열 (예 : max(), sum(), count())을 선택하십시오.

SELECT ID, Name, MAX(EventDate) as LastDate 
    FROM systems 
    WHERE type = 'End User Items' 
    GROUP BY ID, Name 

아마도 ID와 이름을보고 싶을 것입니다. 여기에 불필요한 것은 하나의 유형 만 있기 때문입니다. 그룹에서 max() 날짜를 가져 오려고합니다. 리턴되는 모든 필드는 요약 함수 또는 GROUP BY C 럼 중 하나 여야합니다.

관련 문제