私は、バージョン履歴を追跡するテーブルを持っています。テーブルの各IDの日付と共に最新バージョンのみを取得します。 以下は、ID、バージョンの組み合わせごとに最新の日付をお知らせします。トップレコードのみを選択するにはどうすればよいですか?私はこれを一時テーブルに保存してから、各ID、バージョンの組み合わせのトップレコードのみを取得するためにjoinを使用することができます。これを1ステップで達成するためのより良い方法はありますか?2つの列でグループ化された最新のレコードを取得するSQL Server
サンプル・データ
id version timestamp
123 1.5 2015-03-28 08:21:04.563
123 1.0 2015-03-21 12:58:24.730
234 1.5 2016-10-15 23:08:09.550
345 1.5 2016-05-10 15:18:09.707
345 1.5 2016-09-02 21:30:00.657
の予想される出力
id version timestamp
123 1.5 2015-03-28 08:21:04.563
234 1.5 2016-10-15 23:08:09.550
345 1.5 2016-09-02 21:30:00.657
クエリ
select id,version,max(dt_create)
from version_history (nolock)
group by id,version
order by id
私はこれを試してみましたが、私は
select * from
(
select id,version,dt_create,row_number() over (partition by id,version order by dt_create desc) as a
from version_history (nolock)
) b
where a=1
order by id
上記と同じ結果を得ます
Thanks.Myテーブル210万ドルを持っていますレコードとこれは40 +分を取っている。私は8分で結果を取得する参加を使用しています。 –
@inquisitive_mindあなたには決心があります。データをテーブル変数にロードしない限り、なぜ40 +分が得られたのか想像できません。 –