Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 加入范围内的最大日期_Sql_Oracle - Fatal编程技术网

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子句,然后添加了其他连接