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;