我得到了下表:
Sampletable
{
ID int,
PartnerID int,
ChangeDate datetime
}
我希望所有IDs
按PartnerID
分组,Changedate
最高。
是否有高效的方式,或者您是否会建议其他方法来获得类似的结构?
PS:即时通讯使用microsoft sql server 2012
编辑: 我已经有了一种有效的方法,但我认为可能有一个更高效的解决方案:
Select pas.Id, pas1.ChangeDate
from Sampletable pas
inner join (SELECT PartnerID, Max(ChangeDate) as ChangeDate FRom Sampletable Group by PartnerID) pas1 on pas1.PartnerID = pas.PartnerId AND pas1.ChangeDate = pas.ChangeDate
答案 0 :(得分:1)
你可以尝试这样......
Select ID ,
PartnerID ,
ChangeDate
from
( Select Row_Number() Over (Partition by PartnerID order by ChangeDate Desc) as Row, Id
PartnerID ,
ChangeDate
from SampleTable
) t where row=1
答案 1 :(得分:0)
您可以这样做:
SELECT pas.Id,
pas.ChangeDate
FROM Sampletable pas
WHERE pas.ChangeDate = (SELECT Max(pas1.ChangeDate)
FROM Sampletable pas1
WHERE pas1.PartnerID = pas.PartnerId)