我有一个大的SQL查询(15米运行时)由其他人创建我最近添加了一个新列“SSBSECT_MAX_ENRL”。现在我收到一个ORA-00904错误......但名称是正确的,表引用也是如此。
在“列的长列表”中没有任何更改。 no 是带有“引号”的别名,所有字段和命令都以CAPS LOCK字符输入。只是为了仔细检查,我删除了两个新行,它运行得很好。
表DDEF_STAG.SSBSECT有2个密钥,SSBSECT_TERM_CODE& SSBSECT_CRN。我已经五次检查了该字段的拼写。 “SSBSECT_MAX_ENRL”是P5字段。
做了一些挖掘,我意识到表先被截断,插入。查询中的其他步骤使用DROP和CREATE。
任何线索或建议?
TRUNCATE TABLE DDEF_STAG.SCR_DRIVER;
(Drop all indexes)
INSERT INTO DDEF_STAG.SCR_DRIVER
(
(Long list of columns)
**SSBSECT_MAX_ENRL**
)
SELECT
(Long list of columns)
**DDEF_STAG.SSBSECT.SSBSECT_MAX_ENRL**
FROM
DDEF_STAG.STVRSTS,
DDEF_STAG.STVTERM STVTERM2,
DDEF_STAG.STVTERM,
DDEF_STAG.SYRPRLE,
DDEF_STAG.SCBCRSE_XREF,
DDEF_STAG.SSBSECT,
DDEF_STAG.SGBSTDN,
DDEF_STAG.SGBSTDN_XREF,
DDEF_STAG.SFRSTCR,
DDEF_STAG.STUDENT_TOINCLUDE_DWH
WHERE (giant list of criteria too long to list)
(Recreate all indexes)
答案 0 :(得分:0)
我发现了问题:表需要删除并重新创建,而不是使用TRUNCATE命令。