Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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,我有以下两张桌子 TABLE1 REFNO XDATE XNUM 123 01/01/2017 111 456 01/07/2017 111 789 01/01/2017 222 TABLE2 YNUM YDATE 111 03/01/2017 111 04/07/2017 222 03/01/2017 222 04/01/2017 Expected Result REFNO XCOUNT 1

我有以下两张桌子

TABLE1      
REFNO   XDATE       XNUM
123     01/01/2017  111
456     01/07/2017  111
789     01/01/2017  222

TABLE2  
YNUM    YDATE
111     03/01/2017
111     04/07/2017
222     03/01/2017
222     04/01/2017

Expected Result
REFNO XCOUNT
123   1
456   1
789   2
我想知道是否可以按参考号对这些数据进行分组。使用上述数据,参考编号123和456均使用了编号111,但由于2017年7月4日的YDATE在2017年7月1日之后,因此将其计入参考编号456


因此,我要寻找的是表2中的YNUM计数,基于它对应的REFNO。

在这样的日期获得匹配是很棘手的。在其他数据库中,我会使用相关子查询,但这在Oracle中并不容易,因为相关子句嵌套太深

相反,让我们添加完整的日期范围并使用左连接:


你能解释清楚吗?你需要什么还不清楚。@VamsiPrabhala done你在这一点上尝试了什么?
select t1.refno, count(t2.refno)
from table1 t1
     (select t2.*, lead(xdate) over (partition by refno order by xdate) as next_xdate
      from t2
     ) t1
     on t1.refno = t2.refno and
        t1.ydate >= t2.xdate and
        (t1.ydate < t2.next_xdate or t2.next_xdate is null)
group by t1.refno;