oracle多表查询取最新的一条记录,oracle关联表查询记录表最新一条记录?

本文探讨了一段SQL查询代码的问题,该代码旨在从一对多的关系中选取多方最新的记录,并将其与主表进行左连接。在包含大约2万条记录的HISTORY表中执行此查询后,发现最终结果少了数千条记录。文章分析了这一现象的原因,即当多方表中不存在匹配记录时,不会返回空记录。

select * from (

select a.*,t1.*,row_number() over (partition by t1.serial_no order by t1.cust_work_hours desc ) rn

from HISTORY a

left join (

SELECT to_char(so.FAILURE_DATE, 'yyyy-MM-dd') work_hours,

to_char(cmi.SERIAL_NO)                 serial_no,

nvl(so.CUST_WORK_HOURS, 0)             cust_work_hours

FROM SERV_ORDER so

LEFT JOIN COMM_MACHINE_INFO cmi ON so.MACHINE_ID = cmi.MACHINE_ID

WHERE so.SERV_TYPE_ID = 5

UNION ALL

SELECT to_char(CREATE_DATE, 'yyyy-MM-dd') work_hours,

to_char(MACHINE_NO)                serial_no,

nvl(CUST_WORK_HOURS, 0)            cust_work_hours

FROM MAINTAIN_ORDER

WHERE IS_MAINTAIN = 0) t1 on a.TMS_MACID = t1.serial_no ) t2 where t2.rn =1;

我这上面一段sql,查询的是一个一对多的关系,取多方最新的一条数据,现在我HISTORY表里有2万条数据,最后查询出来的少了几千条,也就是说 我多方那个表里面没有记录,它取不了,然后就不显示吗?不应该有一条空数据出来吗,我是以history为主表left join的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值