我对数据库很陌生,我在工作中发布了一个问题。我正在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查询:
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。
发布于 2015-07-26 17:33:01
当您在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是一个非常糟糕的主意。您可能不会节省那么多假脱机,但是强制优化器重新分发所有的假脱机以进行连接准备。
https://stackoverflow.com/questions/31639216
复制相似问题