1

次の表を取得しました。

Sampletable
{
 ID int, 
 PartnerID int, 
 ChangeDate datetime
}

私は最高ですべてをIDsグループ化したい。PartnerIDChangedate

パフォーマンスの高い方法はありますか、または同様の構造を得るために何か他のことをお勧めしますか?

PS:私はマイクロソフトSQLサーバー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
4

2 に答える 2

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
于 2013-07-04T08:52:45.750 に答える
0

次のようなことができます。

SELECT pas.Id,
       pas.ChangeDate
FROM Sampletable pas
WHERE pas.ChangeDate = (SELECT Max(pas1.ChangeDate) 
                        FROM Sampletable pas1 
                        WHERE pas1.PartnerID = pas.PartnerId)
于 2013-07-04T09:23:05.750 に答える