Sql 加入范围内的最大日期
我有两张表格:部门交易和深度历史Sql 加入范围内的最大日期,sql,oracle,Sql,Oracle,我有两张表格:部门交易和深度历史 SELECT * FROM deal LEFT JOIN depth ON ( deal.dept_gid = depth_gid AND deal.deal_begin_date <= depth_end_date AND deal.deal_end_date >= depth_start_date) 但若深度中有多行满足相同dept\u gid和范围必
SELECT *
FROM deal
LEFT JOIN depth
ON ( deal.dept_gid = depth_gid
AND deal.deal_begin_date <= depth_end_date
AND deal.deal_end_date >= depth_start_date)
但若深度中有多行满足相同dept\u gid和范围必须相交的条件,那个么我需要返回具有最大深度\u end\u日期的行。如何操作?尝试在此处使用行号:
SELECT *
FROM
(
SELECT d1.*, d2.*,
ROW_NUMBER() OVER (PARTITION BY d1.dept_gid ORDER BY d2.depth_end_date DESC) rn
FROM deal d1
LEFT JOIN depth d2
ON d1.dept_gid = d2.depth_gid AND
d1.deal_begin_date <= d2.depth_end_date AND
d1.deal_end_date >= d2.depth_start_date
) t
WHERE rn = 1
尝试在此处使用行号:
SELECT *
FROM
(
SELECT d1.*, d2.*,
ROW_NUMBER() OVER (PARTITION BY d1.dept_gid ORDER BY d2.depth_end_date DESC) rn
FROM deal d1
LEFT JOIN depth d2
ON d1.dept_gid = d2.depth_gid AND
d1.deal_begin_date <= d2.depth_end_date AND
d1.deal_end_date >= d2.depth_start_date
) t
WHERE rn = 1
你能提供一些样本数据和预期结果吗?这真的很有帮助。你能提供一些样本数据和预期结果吗?这真的很有帮助谢谢,我刚刚更改了分区,移动了这个join in WITH子句,然后添加了其他连接谢谢,我刚刚更改了分区,移动了这个join WITH子句,然后添加了其他连接