马库斯的回答是正确的。这样做的方法是使用 IntervalMatch。您可以拥有两个表,并使用 IntervalMatch 在它们之间添加“之间”关系。加载脚本运行后,您无法添加关系。
首先,您必须加载具有日期范围的表(省略 sql 查询)。比方说:
Ranges:
LOAD
rangeID,
validfrom, // date
validto, // date
commonkey, // common key for the two tables
price; // the data that's needed as a result of the linking
其次,您加载另一个带有日期的表
Data:
LOAD
column1,
column2,
date,
commonkey;
接下来,您将不得不使用 IntervalMatch。这是一种方法:
Left Join (Data)
IntervalMatch(date, commonkey)
LOAD
validfrom,
validto,
commonkey
Resident Ranges;
现在您有了两个表之间的链接。您可以通过添加以下内容来删除生成的合成密钥:
Left Join (Data)
LOAD
validfrom,
validto,
commonkey,
rangeID
Resident Ranges;
DROP Fields validfrom, validto FROM Data;
现在这些表是通过使用rangeID
键链接的。如果表格没有一些共同的键,例如类别 ID 或其他东西(即只需要匹配日期),您可以忽略commonkey
上面示例中的。我只是想将它包含在示例中,因为我在自己的情况下需要它,并希望它可以帮助遇到类似问题的人。
您可以在标有“IntervalMatch (extended)”的 Qlikview 帮助中找到它。Qlikview 食谱( fillrowsintervalmatch.qvw ) 也帮助我解决了这个问题。