[英]what's the right way of joning two tables, group by a column, and select only one row for each record?
我有一張船員桌
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 + 持續時間的每個機組人員的一行。
是查看 go 的方式嗎? 如果是,我該怎么寫? 如果沒有,最好的方法是什么?
謝謝
這是對您想要的 select 的查詢:
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
這取決於您需要該數據的目的。
無論如何,查找最新模擬時間的簡單查詢類似於
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 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.