Sab*_*eti 6 sql oracle vlookup
我有这样的观点:
col_1 col_2 my_date
----- ----- -------
1 5 2011
2 6 2014
3 7 2012
4 8 2011
Run Code Online (Sandbox Code Playgroud)
和这样的表:
date_1 date_2 the_value
------ ------ ---------
2010 2012 v1
2013 2015 v2
Run Code Online (Sandbox Code Playgroud)
我想要像Excel VLOOKUP函数那样找到介于和之间的value(the_value),所以我可以得到这样的结果:my_datedate_1date_2
col_1 col_2 my_date the_value
----- ----- ------- ---------
1 5 2011 v1
2 6 2014 v2
3 7 2012 v1
4 8 2011 v1
Run Code Online (Sandbox Code Playgroud)
日期列的类型是DATE.为简单起见,这些是样本数据.
这是SQL中的连接,between而不是相等的连接条件.
select t1.col_1, t1.col_2, t1.my_date, t2.the_value
from table_one t1
join table_two t2 on t1.my_date between t2.date_1 and t2.date_2;
Run Code Online (Sandbox Code Playgroud)
需要注意的是between 包括边界所以它也将返回行,其中my_date是2010.如果你不希望出现这种情况,你需要使用一个连接条件与>和<:
select t1.col_1, t1.col_2, t1.my_date, t2.the_value
from table_one t1
join table_two t2 on t1.my_date > t2.date_1
and t1.my_date < t2.date_2;
Run Code Online (Sandbox Code Playgroud)
这也要求你的"日期"范围不重叠,否则你会得到一些奇怪的结果.
| 归档时间: |
|
| 查看次数: |
3719 次 |
| 最近记录: |