列为空或 null 然后从其他 table 获取值
Column empty or null then fetch value from other table
我在 Postgresql 中有 3 个表。我有一个 Table C,其中我想要
来自 Table A 的结果。如果区域的值来自 null/blank
Table A 然后我需要来自 Table B 的区域值。我如何加入这些
在 PostgreSQL 中?或者如何在 Talend 中完成?
这样的怎么样?
SELECT * FROM (
SELECT COALESCE(ta.country, tb.country) as country, tc.region
FROM tb
FULL OUTER JOIN (
SELECT country, region FROM tablec
) tc ON tc.country = tb.country
FULL OUTER JOIN (
SELECT country, region FROM tablea
) ta ON ta.country = tb.country
) WHERE country IS NOT NULL AND region IS NOT NULL
它将所有表格压缩在一起,select 首选行然后丢弃到空行。 COALESCE
将 select 来自其参数的第一个非空值。
在 Talend 中,您可以使用 tMap 组件,其中主要输入是来自 TableA 的行,而 TableC 是一个查找 table。在输出端,您可以为区域列定义以下内容:
StringUtils.convertEmptyToNull(mainrow.region) != null ? mainrow.region : lookuprow:region
我在 Postgresql 中有 3 个表。我有一个 Table C,其中我想要 来自 Table A 的结果。如果区域的值来自 null/blank Table A 然后我需要来自 Table B 的区域值。我如何加入这些 在 PostgreSQL 中?或者如何在 Talend 中完成?
这样的怎么样?
SELECT * FROM (
SELECT COALESCE(ta.country, tb.country) as country, tc.region
FROM tb
FULL OUTER JOIN (
SELECT country, region FROM tablec
) tc ON tc.country = tb.country
FULL OUTER JOIN (
SELECT country, region FROM tablea
) ta ON ta.country = tb.country
) WHERE country IS NOT NULL AND region IS NOT NULL
它将所有表格压缩在一起,select 首选行然后丢弃到空行。 COALESCE
将 select 来自其参数的第一个非空值。
在 Talend 中,您可以使用 tMap 组件,其中主要输入是来自 TableA 的行,而 TableC 是一个查找 table。在输出端,您可以为区域列定义以下内容:
StringUtils.convertEmptyToNull(mainrow.region) != null ? mainrow.region : lookuprow:region