我有以下工作正常:
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是一个日期字段。
提前致谢!
答案 0 :(得分:10)
这样的事情:
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'