更新语句未在Teradata 15升级后的BTEQ中提供正确的结果
Teradata 15升级后在BTEQ内执行update语句时不起作用。如果从SQL Assistant手动执行,该语句将提供所需的输出。该语句有一个简单的代码 --更新语句更新语句未在Teradata 15升级后的BTEQ中提供正确的结果,teradata,Teradata,Teradata 15升级后在BTEQ内执行update语句时不起作用。如果从SQL Assistant手动执行,该语句将提供所需的输出。该语句有一个简单的代码 --更新语句 UPDATE MAIN2 FROM PSE_BIX_ABT.TP_ABT_DT_MOB_SBSCR_MAIN2 AS MAIN2, ( SELECT DISTINCT SBSCR_ID,
UPDATE MAIN2
FROM
PSE_BIX_ABT.TP_ABT_DT_MOB_SBSCR_MAIN2 AS MAIN2,
(
SELECT DISTINCT
SBSCR_ID,
( SELECT DT FROM PSE_BIX_ABT.TP_ABT_DT_MOB_SBSCR_DT WHERE ID = 1 ) AS SNAP_DT,
SRVC_PRVDR_ID AS PORTED_IN_DNR_SP_ID,
SRVC_PRVDR_NM AS PORTED_IN_DNR_SP_NM,
OREPLACE(OREPLACE(SRVC_PRVDR_DESC,'[Fixed]',''),'[Mobile]','') AS PORTED_IN_DNR_SP_DESC,
PORT_STRT_DT AS PORTED_IN_DT,
CASE
WHEN PORTED_IN_DT = SNAP_DT THEN 1
ELSE 0
END AS PORTED_IN_CNT
FROM
PSE_BIX_SL_VW.V_F_PORTED_SBSCRS AS PORTED_SBSCR
INNER JOIN
PSE_BIX_SL_VW.V_SRVC_PRVDR SRVC
ON PORTED_SBSCR.DNR_SRVC_PRVDR_ID = SRVC.SRVC_PRVDR_ID
WHERE
PORT_IN_FL = 1
AND SBSCR_ID <> -1
AND PORT_STRT_DT <= ( SELECT DT FROM PSE_BIX_ABT.TP_ABT_DT_MOB_SBSCR_DT WHERE ID = 1 )
AND (SBSCR_ID,PORT_STRT_DT) IN (SEL SBSCR_ID,MAX(PORT_STRT_DT) FROM PSE_BIX_SL_VW.V_F_PORTED_SBSCRS WHERE PORT_STRT_DT <= ( SELECT DT FROM PSE_BIX_ABT.TP_ABT_DT_MOB_SBSCR_DT WHERE ID = 1 ) GROUP BY 1 )
) D_PORT_IN
SET
PORTED_IN_DNR_SP_ID = D_PORT_IN.PORTED_IN_DNR_SP_ID,
PORTED_IN_DNR_SP_NM = D_PORT_IN.PORTED_IN_DNR_SP_NM,
PORTED_IN_DNR_SP_DESC = D_PORT_IN.PORTED_IN_DNR_SP_DESC,
PORTED_IN_DT = D_PORT_IN.PORTED_IN_DT,
PORTED_IN_CNT = D_PORT_IN.PORTED_IN_CNT
WHERE
MAIN2.SBSCR_ID = D_PORT_IN.SBSCR_ID
AND MAIN2.SNAP_DT = D_PORT_IN.SNAP_DT;
同样的,请帮忙。
当前Teradata从14升级到15.10.04.05什么是不工作?错误的结果?错误消息?没有错误消息。数据未得到更新。活动计数为0。更新也无法从SQL assistant运行。我刚才提错了。但它在TD14中工作。如果我们在D_PORT_IN顶部再写一个select,并从D_PORT_IN和alias source中导出snap_DT和PORTED_IN_CNT outside和所有其他3列,并将snap_DT从最后一个where子句中使用,则它可以工作。如果我们注释并部分地MAIN2.SNAP_DT=D_PORT_,则查询也可以工作,只需进行一次检查,确认SNAP DT从内部派生传递了null