我正在编写一个程序,通过电子邮件向那些认证将在未来3个月内到期的员工发送电子邮件。由于一些员工已经更新了他们的认证,我正在创建一个临时的“好Ids”表,那些拥有至少三个月不会过期的认证的员工。
为此我正在使用:
CREATE GLOBAL TEMPORARY TABLE GOOD_IDS(
INTERNAL_EMPL_ID VARCHAR(10)
) ON COMMIT PRESERVE ROWS;
INSERT INTO GOOD_IDS (
SELECT DISTINCT (INTERNAL_EMPL_ID)
FROM LICENSE
WHERE LICENSE_TYP_CD IN ('STD') AND EXPIRATION_DT >= CURRENT DATE + 3 months);
SELECT * FROM GOOD_IDS
我已经通过它自己运行第二个选择并且可以确认它返回~3000行。但是,当我运行所有三个时,我得到零行。我错过了什么?
答案 0 :(得分:0)
行。我重写了SQL以使用WITH语句。
现在看起来像这样
WITH
GOOD_ID_LIST AS (SELECT DISTINCT (INTERNAL_EMPL_ID) FROM LICENSE WHERE LICENSE_TYP_CD IN ('STD') AND EXPIRATION_DT >= CURRENT DATE + 3 months)
SELECT ...