sql - select bigger value's records in a query result
问题描述
For instance, I do
select * from tblClientInfo
with some condition
and there are 2 records:
ClientID=001, Salary=500.
ClientID=001, Salary=550.
How Can I just select the record with the highest Salary? FYI, there might be more than 2 records as well.
I know how to asc sort but I don't know how to just select one of them.
This is my code
Select A.AgencyID,19,291,
BETAC.FirstName,BETAC.LastName,BETAC.Phone,BETAC.EMailAddress,BETAC.AnnualIncome,BETAC.Occupants,BETAC.Children2,
BETAC.Children5,ISNULL(BETAC.Children17, 0) ,BETAC.Elderlys,BETAC.Disableds,
0,0,TKFT.FuelTypeID,TKV1.LookupValueID,
BETAC.LandlordName,BETAC.LandlordAddress,BETAC.LandlordCity,BETAC.LandlordState,BETAC.LandlordZip,
BETAC.LandlordPhone,BETAC.HeatInRent,BETAC.DHWInRent,'2018/01/01',BETAC.FirstPrintedDate,
BETAC.StatusDate,NULL,NULL,ISNULL(BETAC.PovertyLevel,0),
BETAC.HighUse,BETAC.HighBurden,ISNULL(BETAC.Section8Housing,0),NULL,NULL,0,BETAC.IsRequestWNZ,
BETAC.SignatureConfirmation,BETAC.MoveInOut,CO.CountyID,
0,0,0,1,BETAC.BenefitAmount,0,1,U.UserID,BETAC.ClientNumber
from LABeta_FA.dbo.tblClientInfo as BETAC
join LABeta_FA.dbo.tgAgency as BETAA on BETAA.AgencyID=BETAC.AgencyID
join tgAgency as A on BETAA.Phone COLLATE DATABASE_DEFAULT=A.Phone COLLATE DATABASE_DEFAULT
join LABeta_FA.dbo.tgClientStatus as LACS on LACS.ClientStatusID=BETAC.ClientStatusID
--join tlkpValues as TKV on TKV.DisplayName COLLATE DATABASE_DEFAULT=LACS.ClientStatus COLLATE DATABASE_DEFAULT
join LABeta_FA.dbo.tlkpHeatingSource as LATKHS on LATKHS.HeatingID=BETAC.FuelTypeID
join tlkpFuelType as TKFT on TKFT.FuelType COLLATE DATABASE_DEFAULT=LATKHS.HeatingSource COLLATE DATABASE_DEFAULT
join LABeta_FA.dbo.tlkpBuildingType as TKBT on TKBT.BuildingTypeID=BETAC.BuildingTypeID
join tlkpValues as TKV1 on TKV1.DisplayName COLLATE DATABASE_DEFAULT=TKBT.BuildingType COLLATE DATABASE_DEFAULT
join LABeta_FA.dbo.tgUser as LAU on LAU.UserID=BETAC.UserID
join tgUser as U on U.UserName COLLATE DATABASE_DEFAULT=LAU.UserName COLLATE DATABASE_DEFAULT
join LABeta_FA.dbo.tgCounty as LACO on LACO.CountyID=BETAC.CountyID
join tgCounty as CO on CO.County COLLATE DATABASE_DEFAULT=LACO.County COLLATE DATABASE_DEFAULT
where BETAC.LastDate>'01/01/2018' and
BETAC.FirstName='Brandon'
Then the result is like
brandon benefitamount=400 date=2018/01/01
brandon benefitamount=450 date=2019/01/01
I want the result to be the highest benefitamount one.
解决方案
利用max()
select max(Salary) from tblClientInfo where ClientID=001
如果要选择表的所有列,可以使用子查询
select * from tblClientInfo
where Salary=(select max(Salary) from tblClientInfo where ClientID=001
) and ClientID=001
推荐阅读
- android - RxJava 主题和可完成
- php - 为什么 array() 和 [] 在此示例中的行为不同
- node.js - 如何将带有-T的curl命令转换为节点js中的axios以将文件上传到azure datalake
- c++ - 为什么在使用可变参数时调用 copy-ctor 而不是隐式转换运算符
- sql - 从左表中获取所有记录并从右表中匹配记录的查询是什么?
- android - Kotlin 协程 - 尝试从挂起的函数返回 ArrayList 时类型不匹配
- php - PHP:从单行私钥获取私钥
- bash - 编辑(sed)文件中出现字符串的特定行
- vb.net - BackGroundWorker 不显示百分比 (Visual Basic)
- c# - C# 确保分配给学生的科目可以有一个或多个结果