MAX

2016-11-08 1 views
0

내가 3 열이 WHERE와 (날짜), GROUPBY,MAX

Firm_Name 
Firm_Status 
Firm_Date 

테이블 이름 : 테스트

나는이 제대로 작동 넣은 사람은 아니다 이유는 확실하지 않다

,

Select Firm_Name, Firm_Status, Max(Firm_Date) 
From Test 
WHERE 
Firm_Status = 'Incorporated' 
GROUP BY Firm_Name, Firm_Status 

본질적으로 이름과 상태와 함께 테이블의 마지막 날짜를 원합니다.

각 행의 최대 날짜를 찾고 있습니다. 중복 된 회사 이름이 있습니다. 두 행이 같은 회사이고 각각 ​​다른 날짜를 가지고 있다면 그 날짜의 나머지 회사 정보와 함께 최대 날짜를 원합니다.

SELECT Firm_Name, Firm_Status, Firm_Date 
    FROM Test 
    WHERE Firm_Date = (SELECT MAX(Firm_Date) FROM Test WHERE Firm_Status = 'Incorporated') 
+2

"* * 작동하지 않는 것 같습니다. *?" 테이블의 "마지막 *"날짜가 무슨 뜻입니까? 하나의 단일 레코드 만 찾고 있습니까? DBMS (SQL Server, MySQL, Oracle 등)는 무엇입니까? 샘플 데이터와 원하는 결과를 제공 할 수 있습니까? – Siyual

+0

많은 예제를 보려면 여기를 참고하십시오 : http://stackoverflow.com/questions/tagged/greatest-n-per-group+sql –

+0

아 죄송합니다, 아니오 각 행의 최대 날짜를 찾고 있습니다. 중복 된 회사 이름이 있습니다. 두 행이 같은 회사이고 각각 ​​다른 날짜를 가지고 있다면 그 날짜의 나머지 회사 정보와 함께 최대 날짜를 원합니다. – ssidenable

답변

1

쉬운, 매우 휴대용 방법을 감사 fetch first 1 row onlyorder by :

Select Firm_Name, Firm_Status, Firm_Date 
From Test 
where Firm_Status = 'Incorporated' 
order by firm_date desc 
fetch first 1 row only; 

group by은 방해가되지 않아도됩니다.

일부 데이터베이스는 fetch first 1 row only의 철자가 limit 또는 select top입니다.

+0

방금 ​​알아 챘습니다. 수정했습니다. – jarlh

+0

죄송합니다. 내가 무엇을 찾고 있었는지 설명해야합니다. 내 게시물에 수정 사항을 추가했습니다. – ssidenable

0

당신은 다음을 시도 할 수 있습니다 :

당신에게

0

당신이 테이블의 마지막 날짜를 원한다면, 가장 간단한 방법 :

Select Firm_Name, Firm_Status, Firm_Date 
From Test 
WHERE Firm_Status = 'Incorporated' 
    and Firm_Date = (select Max(Firm_Date) from test 
        WHERE Firm_Status = 'Incorporated')