次の列を持つテーブルがあります。
ConnectionId INT - primary key, identity,
ServerId INT,
ClientId INT,
Time DATETIME,
ConnectionType INT
ServerId
およびClientId
各組み合わせの最終接続の時間とタイプのすべての組み合わせを返す最適なビューを定義するにはどうすればよいですか?
ランキング機能(SQL Server 2005以降、Oracle、Postgres、DB2、Teradata ..。など)をサポートするデータベースを使用している場合、次のように実行できます。
create view as
select ServerId, ClientId, time, type
from (select t.*,
row_number() over (partition by ServerId, ClientId order by time desc) as seqnum
from t
) t
where seqnum = 1
「最適なビュー」とはどういう意味かわかりません。これをより適切に機能させるには、ServerId、ClientId、およびtimeに3つの部分からなるインデックスを作成します。