簡體   English   中英

從左外部聯接返回一行

[英]Return one row from a left outer join

我有以下工作正常:

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'

問題是表mat_change_req_remarks(r)與mat_change_req(mcr)有多對一的關系,因此,如果r有多行,則上面的查詢將為r中的每一個倍數返回一行。
我只想返回MIN(r.remarks_date)的倍數,則從r返回一行。 r.remarks_date是日期字段。

提前致謝!

像這樣:

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM