最佳视图包括最后一个值

时间:2012-09-04 13:28:19

标签: sql view

我有一个包含以下列的表:

ConnectionId INT - primary key, identity,
ServerId INT, 
ClientId INT, 
Time DATETIME, 
ConnectionType INT

如何定义最佳视图,该视图返回ServerIdClientId的所有组合以及每种组合的最后连接的时间和类型?

1 个答案:

答案 0 :(得分:0)

假设您使用的是支持排名功能的数据库(例如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上创建一个由三部分组成的索引。