【发布时间】:2017-05-31 05:40:43
【问题描述】:
在我的一个用例中,我有两个表,即 flow 和 conf。流表包含所有航班数据的列表。它有列creationdate、datafilename、aircraftid。 conf 表包含配置信息。它有 configdate、aircraftid、configurationame 列。为一种飞机类型创建了多个版本的配置。因此,当我们处理数据文件名时,我们需要从流表中识别飞机 ID,并从创建数据文件名之前创建的 conf 表中获取配置。所以,我尝试了这个,
FROM (
SELECT
F_FILE_CREATION_DATE,
F_FILE_ARCHIVED_RELATIVE_PATH,
F_FILE_ARCHIVED_NAME,
K_AIRCRAFT
from T_FLOW f )x left join
(
select c.config_date, c.aircraft_id, c.configurationfrom t_conf c
) y on y.aircraft_id = x.K_AIRCRAFT
select
x.F_FILE_CREATION_DATE,
x.F_FILE_ARCHIVED_RELATIVE_PATH,
x.F_FILE_ARCHIVED_NAME,
x.K_AIRCRAFT,
y.config_date,
y.aircraft_id,
y.configuration;
这会提取为飞机创建的所有配置,这是显而易见的,因为没有条件检查 conf.config_date 。我试着像这样包含这个条件,
FROM (
SELECT
F_FILE_CREATION_DATE,
F_FILE_ARCHIVED_RELATIVE_PATH,
F_FILE_ARCHIVED_NAME,
K_AIRCRAFT
from T_FLOW f )x join
(
select c.config_date, c.aircraft_id, c.FILEFILTER from t_conf c
) y on y.aircraft_id = x.K_AIRCRAFT where y.config_date < x.f_file_creation_date
select
x.F_FILE_CREATION_DATE,
x.F_FILE_ARCHIVED_RELATIVE_PATH,
x.F_FILE_ARCHIVED_NAME,
x.K_AIRCRAFT,
y.config_date,
y.aircraft_id,
y.filefilter;
这次失败,报错
required (...)+ loop did not match anything at input 'where' in statement
谁能给我一两个提示我哪里出错了,以及如何解决这个问题?
【问题讨论】: