2016-11-25 1 views
0

.groupby, SQL에서 distinct를 사용하는 방법

테이블 이름은 voyagemaster입니다. 별개의 선박을 선택하는 방법과 하나의 선박을 선택하는 방법은 많은 voyagenumber를 가지고 있으므로 voyagedumber를 max (voyagedate)로 선택하기 위해 voyagedate를 에 추가합니다. 선박에 따라 최대 (보이스 에이지) 및 보잉 에이지 번호를 선택하십시오. 해결하는 방법 .. 미리

select distinct(Vessel), VoyageID, VoyageNumber, max(VoyageDate) as vdate, VIA, 
     ROTNo, CutOffDate, CutOffTime, ETA, ETD 
from VoyageMaster 
group by Vessel 

감사는

+0

샘플 테이블 데이터와 예상 결과뿐만 아니라 형식이 지정된 텍스트를 추가하십시오. 또한 현재 쿼리 시도를 보여주십시오. – jarlh

+0

선박 별 VoyageMaster 그룹의 Voyage, VIA, ROTNo, CutOffDate, CutOffTime, ETA, ETD와 같은 고유 한 (Vessel), VoyageID, VoyageNumber, max (VoyageDate)를 선택하십시오 – sarode111

+0

Distinct는 열에 대한 함수가 아니며 SELECT DISTINCT'를 선택하여 선택한 전체 행에 적용합니다. ('select distinct (Vessel), VoyageID ... '는'Select distinct Vessel, VoyageID ...'와 동일하고'Select distinct Vessel, (VoyageID) ... '와 동일합니다 ...) – jarlh

답변

0

이 시도 :

SELECT A.Vessel,V1.VoyageID,V1.VoyageNumber,A.VoyageDate 
FROM VoyageMaster V1 
JOIN (SELECT Vessel,MAX(VoyageDate) VoyageDate 
     FROM VoyageMaster 
     GROUP BY Vessel) A 
    ON A.Vessel = V1.Vessel 
    AND V1.VoyageDate = A.VoyageDate 
+0

인 행을 하나만 반환하고 싶습니다. - "Vessel"과 "VoyageDate"- 난수 열 이름 – sarode111

+0

지금 확인하십시오. – Mansoor

+0

감사합니다. 정말 나에게 도움이 .. – sarode111

0

을이 시도 :

SELECT * from VoyageMaster 
where VoyageDate in (select max(VoyageDate)from VoyageMaster group by vessel) 

또는 열만 당신이 원하는 :

SELECT Vessel,VoyageID,VoyageNumber,VoyageDate,VIA,ROTNo,CutOffDate,CutOffTime,ETA,ETD 
from VoyageMaster 
where VoyageDate in (select max(VoyageDate)from VoyageMaster group by vessel) 
관련 문제