根据最大值获取单行

时间:2014-06-11 20:04:57

标签: sql sql-server

我知道这可能很简单,但我需要一些帮助。我目前正在根据以下查询返回多行。 licensetypeid列返回具有不同INTS的两行。我想返回最高的int,以及与之相关的所有其他列信息。列都具有不同的值。

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

我相信我的问题出在小组中,因为所有其他值都不同。我该怎么纠正这个,所以我只返回ID列中具有最高值的单行?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我对所需的输出并不完全清楚,但这会返回与每个Max(LicenseTypeId)的{​​{1}}相关联的行数据。

LicenseNo

这里是fiddle

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这应该有效:

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

答案 4 :(得分: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