Informatica技术问题:如何基于另一表聚合结果过滤数据表?
问题解答
可以实现,具体有两种常见方式在Table_1的源限定符中整合MinDate并完成过滤:
方式一:子查询直接嵌入过滤条件
直接在Table_1的WHERE子句中嵌套获取MinDate的子查询,无需额外添加端口,写法如下:
SELECT SomeText, SomeDate FROM Table_1 WHERE SomeDate >= ( SELECT MIN(OutputDate_2) AS MinDate FROM Table_2 WHERE SomeDate_2 BETWEEN '2023-01-01' AND '2023-02-01' )
注意:日期格式建议使用标准的'YYYY-MM-DD'格式,避免因数据库日期解析规则不同出现异常。
方式二:添加MinDate端口后过滤
如果业务需求必须在Table_1的查询结果中包含MinDate列,可以先通过子查询将MinDate作为常量列引入,再执行过滤:
SELECT SomeText, SomeDate, (SELECT MIN(OutputDate_2) FROM Table_2 WHERE SomeDate_2 BETWEEN '2023-01-01' AND '2023-02-01') AS MinDate FROM Table_1 WHERE SomeDate >= MinDate
这种方式会在Table_1的每一行结果中重复携带MinDate值,部分数据库会自动优化子查询的执行次数,但性能上通常不如第一种方式高效。
如果是在ETL工具(如Informatica)的源限定符组件中操作,逻辑完全一致:直接修改源限定符的SQL语句即可,优先推荐第一种写法;若必须展示MinDate列,再使用第二种方式。
内容的提问来源于stack exchange,提问作者user3812719
相关产品推荐
相关产品推荐

