当前位置: 代码迷 >> Sql Server >> 关于SqlServer两表联合查询的有关问题
  详细解决方案

关于SqlServer两表联合查询的有关问题

热度:79   发布时间:2016-04-24 10:11:55.0
关于SqlServer两表联合查询的问题?
我现在又2个表:
主表(A)和日志表(B)
A和B的关系式一对多
我现在想实现联合查询2表时,查询A的数据,同时查询B的数据(B里面的数据可能和A表匹配时有多条数据)
我现在就想查询B时,只显示时间最靠前的一条匹配记录,请问这个Sql语句该如何写?

------解决方案--------------------
select a.*,b.*
from a inner join (select b.与A关联的列,max(日期) 日期,其他列 from b group by  b.与A关联的列,其他列)b 
on a.关联B的列=b.关联a的列
------解决方案--------------------
with cte as(
select processnumber,operatetime,row_number() over(partition by processnumber order by operatetime desc) cnt
from tb2
)
select a.*,b.*,cte.* from tb1 a join tb2 b on a.processnumber=b.processnumber join cte on a.processnumber=cte.processnumber and b.operatetime =cte.operatetime 
where cte.cnt=1
------解决方案--------------------
select * from (select *,Row_Number() over (partition by ProcessNumber order by OperateTime desc) num from B) table1 inner join A table2 on table1.ProcessNumber=table2.ProcessNumber where table1.num=1
  相关解决方案