我现在又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