Sql 连接两个表,其中右日期是小于或等于左日期的最大日期
我有两个表要加入Oracle SQL:Sql 连接两个表,其中右日期是小于或等于左日期的最大日期,sql,oracle,date,join,outer-join,Sql,Oracle,Date,Join,Outer Join,我有两个表要加入Oracle SQL: Table A: DATE VALUE 02-May-19 19.25 03-May-19 19.35 04-May-19 19.37 06-May-19 19.45 11-May-19 19.30 01-Jun-19 18.79 01-Jul-19 19.33 Table B: DATE VALUE 02-May-19 11.08 01-Jun-19 11.09 01-Jul-19 1
Table A:
DATE VALUE
02-May-19 19.25
03-May-19 19.35
04-May-19 19.37
06-May-19 19.45
11-May-19 19.30
01-Jun-19 18.79
01-Jul-19 19.33
Table B:
DATE VALUE
02-May-19 11.08
01-Jun-19 11.09
01-Jul-19 11.11
我可以在日期匹配的地方加入这两个值:
select a."date" as "DATE", a.value as a_value, b.value as b_value
from a
left outer join b on b."date" = a."date"
;
DATE A_VALUE B_VALUE
02-May-19 19.25 11.08
03-May-19 19.35
04-May-19 19.37
06-May-19 19.45
11-May-19 19.30
01-Jun-19 18.79 11.09
01-Jul-19 19.33 11.11
我希望能够做到的是,在表B中不存在日期的情况下,取最佳可用的B.value,其中B.date在联接条件下使用月和年函数
select a.date, a.value, b.value
from a
left outer join b
on EXTRACT(month FROM b.date)=EXTRACT(month FROM a.date)
and EXTRACT(year FROM b.date)=EXTRACT(yearFROM a.date)
在联接条件下使用月和年函数
select a.date, a.value, b.value
from a
left outer join b
on EXTRACT(month FROM b.date)=EXTRACT(month FROM a.date)
and EXTRACT(year FROM b.date)=EXTRACT(yearFROM a.date)
也许最简单的方法是相关子查询:
select a.*,
(select max(b.value) keep (dense_rank first order by b.date desc)
from b
where b.date <= a.date
) b_value
from a;
也许最简单的方法是相关子查询:
select a.*,
(select max(b.value) keep (dense_rank first order by b.date desc)
from b
where b.date <= a.date
) b_value
from a;
在查询中,可以添加带有忽略空值选项的滞后函数:
select a."date"
, a."value"
, coalesce(b."value", lag(b."value") ignore nulls over (order by a."date")) as best_match_value
from a
left outer join b on b."date" = a."date"
order by a."date";
在查询中,可以添加带有忽略空值选项的滞后函数:
select a."date"
, a."value"
, coalesce(b."value", lag(b."value") ignore nulls over (order by a."date")) as best_match_value
from a
left outer join b on b."date" = a."date"
order by a."date";
月和年功能。。。在Oracle???@BarbarosÖzhan中,谢谢你-我没有注意到db tagmonth and year函数。。。在Oracle中???@BarbarosÖzhan,谢谢你-我没有注意到db标签