从左外连接返回一行

ind*_*ath 4 sql oracle11g

我有以下工作正常:

SELECT mcr.mat_change_req_id, mcr.line_item_number
    , r.remarks, r.remarks_date
FROM mat_change_req mcr
    left outer join mat_change_req_remarks r ON mcr.mat_change_req_id = r.mat_change_req_id
WHERE mcr.contract_id = 'IR-30910'
    AND
    mcr.project_number = '0801082'
Run Code Online (Sandbox Code Playgroud)

问题是表mat_change_req_remarks(r)与mat_change_req(mcr)具有多对一关系,因此如果r有多行,则上述查询为r中的每个多数返回一行.
如果有多个MIN(r.remarks_date),我想只从r返回一行.r.remarks_date是一个日期字段.

提前致谢!

a_h*_*ame 11

像这样的东西:

SELECT mcr.mat_change_req_id, 
       mcr.line_item_number, 
       r.remarks, 
       r.remarks_date
FROM mat_change_req mcr
    left outer join (
      select mat_change_req_id, 
             remarks,
             remarks_date,
             row_number() over (partition by mat_change_req_id order by remarks_date) as rn
      from mat_change_req_remarks
    ) r ON mcr.mat_change_req_id = r.mat_change_req_id and r.rn = 1
WHERE mcr.contract_id = 'IR-30910'
  AND mcr.project_number = '0801082'
Run Code Online (Sandbox Code Playgroud)