Teradata 3706,期望介于 DISTINCT 和 LEFT 关键字之间
Teradata 3706, expected something between DISTINCT and LEFT keyword
我在这里尝试将 UPDATE 查询与 JOIN 和 SELECT 结合使用,但我遇到了 3706 错误。
这里是错误行-
UPDATE A0619IL3549_D_RPT.RPT_IS_ELIGIBILITY A2
FROM
(SELECT A.REP_CD, A.GEO_CD,A.MONTH_ID, B.IC_PRD AS IC_PAYOUT_FLAG,
COALESCE(CASE
WHEN UPPER(B.IC_PRD) = 'SEMESTERLY' THEN A.CURR_SEMESTER_FLAG
WHEN UPPER(B.IC_PRD) = 'QUARTERLY' THEN A. CURR_QUARTER_FLAG
ELSE '0'
END,'0') IC_PAYOUT_FLAG
FROM
A0619IL3549_D_RPT.RPT_IS_ELIGIBILITY A,
(
SELECT DISTINCT LEFT(B. REP_CD, POSITION('-' IN B.REP_CD)-1) AS REP_CD,C.GEO_CD,IC_PRD FROM
A0619IL3549_D00_IC_MAIN.ICDM_GEO_REP_PROD A, A0619IL3549_D00_IC_MAIN.ICDM_DIM_REP B,
A0619IL3549_D00_IC_MAIN.ICDM_DIM_GEO_HIER C
WHERE
A.REP_SK=B.REP_SK
AND A.GEO_SK=C.GEO_SK
AND A.RUN_ID = (SELECT MAX(RUN_ID) FROM A0619IL3549_D00_IC_MAIN.ICDM_GEO_REP_PROD)
) B
WHERE
A.REP_CD = B.REP_CD
AND
A.GEO_CD = B.GEO_CD)A1
SET A2.IC_PAYOUT_FALG = A1.IC_PAYOUT_FLAG
WHERE
A1.REP_CD = A2.REP_CD
AND
A1.MONTH_ID = A2.MONTH_ID
AND
A.GEO_CD = A2.GEO_CD
LEFT
在TD15.10之前不是有效的Teradata函数,是ODBCSQL,自动翻译,但只针对SELECT
.
改用有效语法:
SUBSTRING(B. REP_CD FROM 1 FOR POSITION('-' IN B.REP_CD)-1)
我在这里尝试将 UPDATE 查询与 JOIN 和 SELECT 结合使用,但我遇到了 3706 错误。
这里是错误行-
UPDATE A0619IL3549_D_RPT.RPT_IS_ELIGIBILITY A2 FROM (SELECT A.REP_CD, A.GEO_CD,A.MONTH_ID, B.IC_PRD AS IC_PAYOUT_FLAG, COALESCE(CASE WHEN UPPER(B.IC_PRD) = 'SEMESTERLY' THEN A.CURR_SEMESTER_FLAG WHEN UPPER(B.IC_PRD) = 'QUARTERLY' THEN A. CURR_QUARTER_FLAG ELSE '0' END,'0') IC_PAYOUT_FLAG FROM A0619IL3549_D_RPT.RPT_IS_ELIGIBILITY A, ( SELECT DISTINCT LEFT(B. REP_CD, POSITION('-' IN B.REP_CD)-1) AS REP_CD,C.GEO_CD,IC_PRD FROM A0619IL3549_D00_IC_MAIN.ICDM_GEO_REP_PROD A, A0619IL3549_D00_IC_MAIN.ICDM_DIM_REP B,
A0619IL3549_D00_IC_MAIN.ICDM_DIM_GEO_HIER C WHERE A.REP_SK=B.REP_SK AND A.GEO_SK=C.GEO_SK AND A.RUN_ID = (SELECT MAX(RUN_ID) FROM A0619IL3549_D00_IC_MAIN.ICDM_GEO_REP_PROD) ) B WHERE A.REP_CD = B.REP_CD AND A.GEO_CD = B.GEO_CD)A1 SET A2.IC_PAYOUT_FALG = A1.IC_PAYOUT_FLAG WHERE A1.REP_CD = A2.REP_CD AND A1.MONTH_ID = A2.MONTH_ID AND A.GEO_CD = A2.GEO_CD
LEFT
在TD15.10之前不是有效的Teradata函数,是ODBCSQL,自动翻译,但只针对SELECT
.
改用有效语法:
SUBSTRING(B. REP_CD FROM 1 FOR POSITION('-' IN B.REP_CD)-1)