加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 多表连接查询取最近一条记录

发布时间:2020-12-12 14:16:12 所属栏目:百科 来源:网络整理
导读:SELECT PCC.CUSTNO custNo,T.PERSON_NO,T.CREATNAME visitorName,to_char(T.VISIT_TIME,'yyyy-MM-dd HH24:mi:ss') visitDate,T.VISIT_CONTENT vistTxt,PCC.INVNM custName,PCC.BALANCE_TOTAL,PCC.BALANCE_PRODUCT FROM PRSP_CRM_CUSTINFO PCCLEFT JOIN(SELEC
SELECT PCC.CUSTNO custNo,T.PERSON_NO,T.CREATNAME visitorName,to_char(T.VISIT_TIME,'yyyy-MM-dd HH24:mi:ss') visitDate,T.VISIT_CONTENT vistTxt,PCC.INVNM custName,PCC.BALANCE_TOTAL,PCC.BALANCE_PRODUCT FROM PRSP_CRM_CUSTINFO PCC
		LEFT JOIN
		(SELECT a.*,row_number() over(partition by a.PERSON_NO ORDER BY a.VISIT_TIME DESC) as rn FROM 
		(SELECT 
	       PCV.VISIT_CONTENT,PCV.VISIT_TIME,PPD.INVNM CREATNAME,PCMP.PERSON_NO
        FROM 
			PRSP_CRM_MEETANDACTITY_PERSON PCMP 
		LEFT JOIN 
			PRSP_CRM_VISIT PCV 
		ON 
			PCV.SERIAL_VISIT_NO=PCMP.SERIAL_REFREN_NO 
		LEFT JOIN 
			PRSP_CRM_CUSTINFO PPD 
		ON 
			PPD.CUSTNO=PCV.CREATE_NO
		WHERE PCMP.MEET_TYPE='1' AND PCMP.PERSON_TYPE='2' AND PCMP.DELETE_FLG='0') a ) T
		ON PCC.CUSTNO=T.PERSON_NO and t.rn=1
		where 1=1

1.首先 写一个 连接查询语句: 比如有时间的表排序

2、 通过这个函数 select a.* row_number() over(partition by 分组的字段 order by 排序时间 desc) as rn from (结果集) a

2. 显示的结果

这样就会把第一条第二条进行排序。。 我们 写一个条件 rn=1 这样就是取最近一条了。。

最后去关联你想要的表就好了。。

遇到的问题:

如果其他时间为空 那么他的排序就是 为空的时间排再前面 如何解决呢?

这里使用上面的办法解决。。。

效果图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读