我在SAS E.G上創建了一系列表格語句。他們孤立地工作沒有問題,但是當我將它們一起運行時,只有第一個表創建。日誌中沒有錯誤,也沒有顯示它甚至嘗試運行第二組表。Proc SQL創建表語句不工作但沒有錯誤?
該代碼必須作爲大型項目的一部分一起運行。任何幫助,將不勝感激! (我修改了部分內容,因爲它很長,並且評論問題似乎發生的部分)。
EXECUTE(CREATE MULTISET TABLE TEMP_BAG_CAR_BASET
(
REGISTRATION_ID INTEGER
,SOURCE_SYSTEM_CD BYTEINT
,BILLING_BASE VARCHAR(20)
,INSIGHT_BILLING_BASE VARCHAR(20)
,ENTERPRISE_IND BYTEINT
,BILLING_ACCOUNT_NO INTEGER
) PRIMARY INDEX (REGISTRATION_ID)
) BY TERADATA;
EXECUTE (INSERT INTO TEMP_BAG_CAR_BASET
SELECT
A.REGISTRATION_ID
,A.SOURCE_SYSTEM_CD
,A.BILLING_BASE
,A.INSIGHT_BILLING_BASE
,A.ENTERPRISE_IND
,CASE WHEN A.BILLING_ACCOUNT_NO > 0 THEN A.BILLING_ACCOUNT_NO
WHEN Z.BILLING_ACCOUNT_NO > 0 AND A.SOURCE_SYSTEM_CD = 2 THEN Z.BILLING_ACCOUNT_NO
WHEN V.BAN >0 AND A.SOURCE_SYSTEM_CD = 0 THEN V.BAN
ELSE NULL END
FROM [SOURCE 1] AS A
LEFT JOIN [SOURCE 2] AS V ON A.REGISTRATION_ID = B.REGISTRATION_ID
AND A.DISCONNECTION_DT <= V.DISCONN_DATE AND A.DISCONNECTION_DT > V.CONN_DATE
AND V.CONN_DATE <= %SYSEVALF(%SYSFUNC(PUTN(&ENDDATE, YYMMDDN8.))-19000000)
INNER JOIN (SELECT REGISTRATION_ID
,BILLING_ACCOUNT_TYP
FROM [SOURCE 3]
WHERE %SYSEVALF(%SYSFUNC(PUTN(&ENDDATE, YYMMDDN8.))-19000000) BETWEEN EFFECTIVE_DT AND EXPIRY_DT
AND REF_RULE_BASE_IND = 'Y') AS B
ON A.REGISTRATION_ID = B.REGISTRATION_ID
LEFT JOIN (SELECT REGISTRATION_ID
,REGISTERED_SOURCE_SYSTEM_CD
,BILLING_ACCOUNT_CD AS BILLING_ACCOUNT_NO
,CORPORATE_ID
FROM [SOURCE 3]
WHERE (CAST(&MTH0 AS DATE) +1) BETWEEN EFFECTIVE_DT AND EXPIRY_DT
AND REF_RULE_BASE_IND = 'Y') AS Z
ON A.REGISTRATION_ID = Z.REGISTRATION_ID
LEFT JOIN [SOURCE 4]E
ON A.PORTED_IN_FROM = E.NETWORK_PROVIDER_ID
AND E.EXPIRY_DT = 160
LEFT JOIN [SOURCE 5] AS F
ON F.EXPIRY_DT = 160
WHERE A.ENTERPRISE_IND = 0
AND A.REGISTERED_BASE_IND = 1
AND A.REGISTRATION_TYP = 1
AND SUMMARY_DT = %SYSEVALF(%SYSFUNC(PUTN(&ENDDATE, YYMMDDN8.))-19000000)
)
BY TERADATA;
EXECUTE
(
COLLECT STATISTICS TEMP_BAG_CAR_BASET INDEX(REGISTRATION_ID)
)
BY TERADATA;
/*At this point the code does not create any of the following tables but no errors occur */
EXECUTE(CREATE MULTISET TABLE TEMP_BAG_CAR_BASE
(
REGISTRATION_ID INTEGER
,SOURCE_SYSTEM_CD BYTEINT
,BILLING_BASE VARCHAR(20)
,INSIGHT_BILLING_BASE VARCHAR(20)
,ENTERPRISE_IND BYTEINT
,BILLING_ACCOUNT_NO INTEGER
) PRIMARY INDEX (REGISTRATION_ID)
) BY TERADATA;
EXECUTE(INSERT INTO TEMP_BAG_CAR_BASE
SELECT
A.REGISTRATION_ID
,SOURCE_SYSTEM_CD
,BILLING_BASE
,INSIGHT_BILLING_BASE
,ENTERPRISE_IND
,BILLING_ACCOUNT_NO
FROM TEMP_BAG_CAR_BASET AS A
INNER JOIN (SELECT REGISTRATION_ID
,MAX(DISCONN_DATE ) AS DISCONN_DATE
FROM TEMP_BAG_CAR_BASET
GROUP BY 1) AS B
ON A.REGISTRATION_ID = B.REGISTRATION_ID
AND A.DISCONN_DATE = B.DISCONN_DATE
)
BY TERADATA;