Sql 如何在视图中显示最近添加的详细信息中的字段?
查询: 结果: 问题: 如何创建一个视图/查询,为每个主记录(#foot)以及最近插入的细节(#note)(如果有)中的字段生成一行 目标: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
(注意:我判断哪一个是最新的是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