Teradata比较BTEQ内部的两个变量并选择一个结果



我需要帮助来比较Teradata BTEQ脚本中的2个变量,并根据结果做出决定。我尝试如下:

CREATE VOLATILE TABLE VT_JRNL_MAX_SNAPSHOT_DT,NO LOG,NO FALLBACK
(
MAX_DATE_JRNL DATE FORMAT 'YYYY-MM-DD'
);
INSERT INTO VT_JRNL_MAX_SNAPSHOT_DT
(
MAX_DATE_JRNL
)
SELECT MAX(JOURNAL_SNAPSHOT_DATE) FROM NDW_NRDP_TABLES.NRDP_EWFM_AGENT_SEGMENT_JRNL;
CREATE VOLATILE TABLE VT_SEM_MAX_SNAPSHOT_DT,NO LOG,NO FALLBACK
(
MAX_DATE_SEM DATE FORMAT 'YYYY-MM-DD'
);
INSERT INTO VT_SEM_MAX_SNAPSHOT_DT
(
MAX_DATE_SEM
)
SELECT MAX(JOURNAL_SNAPSHOT_DATE) FROM NDW_NRDP_TABLES.NRDP_EWFM_AGENT_SEGMENT;
.IF MAX_DATE_JRNL >= MAX_DATE_SEM THEN .GoTo DEL_STEP ;   
.IF MAX_DATE_JRNL < MAX_DATE_SEM THEN .GoTo EXIT_STEP ; 
.LABEL DEL_STEP ;
DEL FROM SEMANTIC;
.LABEL EXIT_STEP ;
INSERT ......;

谢谢,Debasis

BTEQ中一个简单的变量是ACTIVITYCOUNT

有了这个,您就可以形成如下的查询:

SELECT       1
FROM         VT_SEM_MAX_SNAPSHOT_DT  S
CROSS JOIN   VT_JRNL_MAX_SNAPSHOT_DT J
WHERE        MAX_DATE_JRNL >= MAX_DATE_SEM
;
.IF ACTIVITYCOUNT < 1 THEN .GOTO EXIT_STEP;
DEL FROM SEMANTIC;
.LABEL EXIT_STEP;
...

可能有更简洁的方法来编写这个查询,以避免交叉连接,甚至完全避免使用volatile表。但这应该作为一个起点。

最新更新