2014-06-11 2 views
0

이 코드는 매우 간단하지만 도움이 필요하다는 것을 알고 있습니다. 나는 현재 아래 쿼리를 기반으로 여러 행을 반환하고 있습니다. licensetypeid 열은 INTS가 다른 두 행을 반환합니다. 가장 높은 int와 그와 관련된 다른 모든 열 정보를 반환하려고합니다. 열의 값은 모두 다릅니다.최대 값을 기준으로 단일 행 가져 오기

select JdeAddressNo, LicenseNo, ExpirationDate, max(LicenseTypeId) LicenseTypeID 
from Licensing_DEV..License 
group by JdeAddressNo, LicenseNo, ExpirationDate 

다른 모든 값이 다르기 때문에 그룹에 내 문제가 있다고 생각합니다. ID 열에서 가장 높은 값을 가진 단일 행을 반환하기 위해이 문제를 어떻게 해결할 수 있습니까?

+0

전체 테이블에서 가장 높은 값을 원할 경우 마지막 항목 (<사용자 ID 열>)을 선택하십시오. – VikingBlooded

+0

왜 사용할 수 없습니까 ** select top 1 ** –

+0

select top 1은 첫 번째 레코드를 보여줍니다. 꼭 최고가는 아닙니다. – VikingBlooded

답변

2
SELECT * 
FROM (
    select JdeAddressNo, LicenseNo, ExpirationDate, LicenseTypeId 
     ,ROW_NUMBER() OVER (PARTITION BY JdeAddressNo, LicenseNo, ExpirationDate ORDER BY LicenseTypeId DESC) rn 
    from Licensing_DEV..License 
    )A 
WHERE rn = 1 
0

내가 원하는 출력에 완전히 명확하지 않다, 그러나 이것은 각 LicenseNo에 대한의 Max(LicenseTypeId)과 관련된 행 데이터를 반환합니다.

select t.JdeAddressNo, t.LicenseNo, t.ExpirationDate, t.LicenseTypeID 
    from Licensing_DEV..License t 
    join (select max(LicenseTypeId) as LicenseTypeId, LicenseNo from Licensing_DEV..License group by LicenseNo) m 
     on t.LicenseTypeID=m.LicenseTypeID 
     and t.LicenseNo=m.LicenseNo 

여기는 fiddle입니다.

0
select top 1 JdeAddressNo, LicenseNo, ExpirationDate, LicenseTypeId 
from Licensing_DEV..License 
group by JdeAddressNo, LicenseNo, ExpirationDate 
order by max(LicenseTypeId) desc 
0

이 작동합니다 : 당신이 어떤 오류가 발생하는 경우

select JdeAddressNo, LicenseNo, ExpirationDate, LicenseTypeID 
from Licensing_DEV..License 
where LicenseTypeID = (Select max(LicenseTypeID) from Licensing_DEV..License) 
0

이 시도, 오류 및 일부 샘플 데이터를 게시하시기 바랍니다.

SELECT Top 1 JdeAddressNo, LicenseNo, ExpirationDate, LicenseTypeId 
FROM  Licensing_DEV..License 
WHERE  LicenseTypeId = (SELECT MAX(licenseTypeID) FROM Licensing_DEV..License) 
GROUP BY JdeAddressNo, LicenseNo, ExpirationDate 
order by LicenseTypeId desc 
관련 문제