Aster Studio 6.0中创建表格的模糊列错误

时间:2015-07-26 16:20:32

标签: join teradata

我是数据库的新手,并且正在发布工作中的问题。我在Aster Studio 6.0中创建了一个表,但是有一个关于模糊列的错误。我在Teradata SQL Assistant中运行了相同的查询,但没有收到错误。

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

EDW代表原始数据库,但列标有别名。

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

这是SQL查询:

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。

1 个答案:

答案 0 :(得分:1)

在Teradata中尝试CREATE TABLE AS SELECT时,会出现同样的错误。有三个列名称SRC_SYS_NM& SRC_SYS_PROD_ID& SRC_SYS_STORE_ID,在SELECT中多次使用(具有不同的表别名)。

添加列别名以使这些名称唯一,例如trans_SRC_SYS_NM代替d.SRC_SYS_NM

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