我a
在 Vertica 中有一个表,其中包含item_id
附加到的code
时间from_date
create table a (
code varchar(16),
item_id int,
from_date timestamptz
);
b
和一个包含code
给定日期的表格t
create table b (
code varchar(16),
t date
);
我需要a.item_id
从b.code
日期检索b.t
。数据看起来像这样:
insert into a values ('abc', 1, '2013-01-01 10:00:00 EST'::timestamptz);
insert into a values ('abc', 2, '2013-01-05 11:00:00 EST'::timestamptz);
insert into a values ('abc', 3, '2013-01-09 9:00:00 EST'::timestamptz);
insert into b values ('abc', '2013-01-06'::date);
我尝试在 LEFT JOIN 中使用 Vertica 的INTERPOLATE,以便及时检索前一(code, item_id)
对t
select
b.code, b.t, a.item_id
from b
left join a on a.code = b.code and b.t INTERPOLATE PREVIOUS VALUE a.t;
这给了我一个类型错误Interpolated predicates can accept arguments of the same type only
。
所以我尝试转换b.t
为时间戳
select
b.code, b.t, a.item_id
from b
left join a on a.code = b.code
and (b.t::timestamptz) INTERPOLATE PREVIOUS VALUE a.t;
这给了我一个语法错误Syntax error at or near "INTERPOLATE"
。
如果没有 INTERPOLATE,SQL 表达式可以工作,但不会加入前一行。
是否可以将我的日期转换为带有 INTERPOLATE 的 JOIN 中的时间戳?
如果没有,是否有任何其他方法可以让我item_id
在 time检索当前t
?