首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Aster Studio 6.0中创建表时出现歧义列错误

在Aster Studio 6.0中创建表时出现歧义列错误
EN

Stack Overflow用户
提问于 2015-07-26 16:20:31
回答 1查看 334关注 0票数 0

我对数据库很陌生,我在工作中发布了一个问题。我正在Aster Studio 6.0中创建一个表,但是出现了一个关于不明确列的错误。我在中运行了相同的查询,但没有收到错误。

我有六个表,数百万行名为EDW.SWIFTIQ_TRANS_DTL、EDW.SWIFTIQ_STORE、EDW.SWIFTIQ_PROD、EDW.STORE_XREF、EDW.TDLNX_STR_OUTLT和EDW.SURV_CWC。

EDW表示原始数据库,但列被标记为别名。

为了节省假脱机空间,我在VARCHAR列上做了一个VARCHAR。对于有关TDLNX_RTL_OUTLT_NBR的错误,我在来自两个不同表的类似列上执行了一个INNER JOIN。在SQL中进行预览时,有一个临时表,该表只有一个名为TDLNX_RTL_OUTLT_NBR的列。

下面是SQL查询:

代码语言:javascript
复制
CREATE TABLE public.table_name

DISTRIBUTE BY HASH (SRC_SYS_PROD_ID) AS (

SELECT * FROM load_from_teradata(

ON public.load_from_teradata_dummy

TDPID(‘database_name')

USERNAME(’user_name')

PASSWORD(’ss')

QUERY ('SELECT e.TDLNX_RTL_OUTLT_NBR, e.OUTLT_ST_ADDR_TXT, e.STORE_OUTLT_ZIP_CD, d.TRANS_ID, d.TRANS_DT,

d.TRANS_TM, d.UNIT_QTY, d.SRC_SYS_STORE_ID, d.SRC_SYS_PROD_ID, d.SRC_SYS_NM, a.SRC_SYS_STORE_ID, a.SRC_SYS_NM, a.STORE_NM,

a.CITY_NM, a.ZIP_CD, a.ST_cd, p.SRC_SYS_PROD_ID, p.SRC_SYS_NM, p.UPC_CD, p.PROD_ID, f.SRC_SYS_STORE_ID, f.SRC_SYS_NM,

f.TDLNX_RTL_OUTLT_NBR, g.SURV_CWC_WSLR_CUST_PARTY_ID, g.AGE_CD, g.HIGH_END_ACCT_FLG, g.RACE_ETHNC_CD, g.OCCPN_CD

FROM EDW.SWIFTIQ_TRANS_DTL d

INNER JOIN EDW.SWIFTIQ_STORE a

    ON trim( a.SRC_SYS_STORE_ID) = trim(d.SRC_SYS_STORE_ID)

INNER JOIN EDW.SWIFTIQ_PROD p

    ON trim(p.SRC_SYS_PROD_ID) = trim(d.SRC_SYS_PROD_ID)

    and p.SRC_SYS_NM = d.SRC_SYS_NM

INNER JOIN EDW.STORE_XREF f

    ON trim(f.SRC_SYS_STORE_ID) = trim(a.SRC_SYS_STORE_ID)

INNER JOIN EDW.TDLNX_STR_OUTLT e

    ON trim(e.TDLNX_RTL_OUTLT_NBR)= trim(f.TDLNX_RTL_OUTLT_NBR)

INNER JOIN EDW.SURV_CWC g

    ON g.SURV_CWC_WSLR_CUST_PARTY_ID = e.WSLR_CUST_PARTY_ID

WHERE TRANS_DT between ''2015-01-01'' and ''2015-03-31''')

num_instances('4') ) );

错误:列引用'TDLNX_RTL_OUTLT_NBR‘是不明确的。

编辑:忘记了对表别名的描述。A代表EDW.SWIFTIQ_STORE,p代表EDW.SWIFTIQ_PROD,f代表EDW.STORE_XREF,e代表EDW.TDLNX_STR_OUTLT,g代表EDW.SURV_CWC,d代表EDW.SWIFTIQ_TRANS_DTL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-26 17:33:01

当您在Teradata中尝试CREATE TABLE AS SELECT时,您将得到相同的错误。有三个列名,SRC_SYS_NM & SRC_SYS_PROD_IDSRC_SYS_STORE_ID,它们在SELECT中被多次使用(具有不同的表别名)。

添加列别名以使这些名称唯一,例如trans_SRC_SYS_NM而不是d.SRC_SYS_NM

另外,连接中的TRIM是一个非常糟糕的主意。您可能不会节省那么多假脱机,但是强制优化器重新分发所有的假脱机以进行连接准备。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31639216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档