Sql 如何在视图中显示最近添加的详细信息中的字段?

Sql 如何在视图中显示最近添加的详细信息中的字段?,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,查询: 结果: 问题: 如何创建一个视图/查询,为每个主记录(#foot)以及最近插入的细节(#note)(如果有)中的字段生成一行 目标: (注意:我判断哪一个是最新的是id,对于较新的记录,该id会更高)假设在#NOTE表中创建的id始终是递增的(通过使用标识或通过控制插入始终按最大值递增),您可以使用以下查询(使用秩函数): 伙计,谢谢!:)你们不知道我花了多长时间试图将order by转换成子查询 drop table #foot create table #foot ( i

查询:

结果:

问题:

如何创建一个视图/查询,为每个主记录(#foot)以及最近插入的细节(#note)(如果有)中的字段生成一行

目标:


(注意:我判断哪一个是最新的是id,对于较新的记录,该id会更高)

假设在#NOTE表中创建的id始终是递增的(通过使用标识或通过控制插入始终按最大值递增),您可以使用以下查询(使用秩函数):

伙计,谢谢!:)你们不知道我花了多长时间试图将order by转换成子查询
drop table #foot
create table #foot (
    id int primary key not null,
    name varchar(50) not null
)
go

drop table #note
create table #note (
    id int primary key not null,
    note varchar(MAX) not null,
    foot_id int not null references #foot(id)
)
go

insert into #foot values 
(1, 'Joe'), (2, 'Mike'), (3, 'Rob')
go

insert into #note (id, note, foot_id) values (1, 'Joe note 1', 1)
go
insert into #note (id, note, foot_id) values(2, 'Joe note 2', 1)
go
insert into #note (id, note, foot_id) values(3, 'Mike note 1', 2)
go

select F.name, N.note, N.id
from #foot F left outer join #note N on N.foot_id=F.id
select t.name, t.note, t.id
    from (select F.name, N.note, N.id,
                 ROW_NUMBER() over(partition by F.id order by N.id desc) as RowNum
              from #foot F 
                  left outer join #note N 
                      on N.foot_id=F.id) t
    where t.RowNum = 1
WITH Dat AS
(
    SELECT f.name, 
             n.note, 
             n.id,
             RANK() OVER(PARTITION BY n.foot_id ORDER BY n.id DESC) rn
    FROM #foot f LEFT OUTER JOIN #note n 
    ON n.foot_id = f.id  
)
SELECT *
  FROM Dat
    WHERE rn = 1