我有一个船员表
CREATE TABLE crew(crew_id INT, crew_name nvarchar(20), )
还有一个时间日志表,这是一个由船员执行的非常长的行动列表
CREATE TABLE [dbo].[TimeLog](
[time_log_id] [int] IDENTITY(1,1) NOT NULL,
[experiment_id] [int] NOT NULL,
[crew_id] [int] NOT NULL,
[starting] [bit] NULL,
[ending] [bit] NULL,
[exception] [nchar](10) NULL,
[sim_time] [time](7) NULL,
[duration] [int] NULL,
[real_time] [datetime] NOT NULL )
我希望有一个视图,每个团队只有一行显示最新的sim_time +持续时间。
是一种观点的方式吗?如果是,我该怎么写呢?如果没有,最好的方法是什么?
由于
答案 0 :(得分:3)
以下是一个选择所需内容的查询:
select * from (
select
*,
row_number() over (partition by c.crew_id order by l.sim_time desc) as rNum
from crew as c
inner join TileLog as l (on c.crew_id = l.crew_id)
) as t
where rNum = 1
答案 1 :(得分:0)
这取决于您需要的数据。
无论如何,找到最新的sim时间的简单查询就像是
select C.*, TL.sim_time
from crew C /*left? right? inner?*/ join TimeLog TL on TL.crew_id = C.crew.id
where TL.sim_time in (select max(timelog_subquery.sim_time) from TimeLog timelog_subquery where crew_id = C.crew_id )