Sql ORA-00945:指定的群集列不存在

Sql ORA-00945:指定的群集列不存在,sql,oracle,Sql,Oracle,下面是包含集群的代码,表永远不会被创建,oracle文档也不会被创建 create cluster c123 (a integer) size 512; / drop table t123; / create table t123 cluster c123 (b) as SELECT t1.col1 FROM T1, T2, T3 WHERE T1.col1=T3.col11 AND T2.col1=T3.col12 AND T1.col2=1; / 它需要创建一个表,而我一直在 ...

下面是包含集群的代码,表永远不会被创建,oracle文档也不会被创建

create cluster c123 (a integer)
size 512;
/

drop table t123;
/

create table t123
cluster c123 (b)
as SELECT t1.col1 FROM T1, T2, T3
WHERE T1.col1=T3.col11 AND
T2.col1=T3.col12 AND T1.col2=1;
/
它需要创建一个表,而我一直在

...
Error report -
ORA-00945: specified clustered column does not exist
00945. 00000 -  "specified clustered column does not exist"
*Cause:    
*Action:
您可以添加别名:

create table t123
cluster c123 (b)
as 
SELECT t1.col1 AS b
FROM T1
JOIN T2 ON T1.col1=T2.col11
JOIN T3 ON T2.col1=T3.col12
WHERE T1.col2=1;

谢谢,这解决了我的问题。只需要事先在集群上创建一个索引。该表随后成功创建。如果您使用表达式而不是列(例如,
…从DUAL
中选择强制转换(123为整数)),您会得到“ORA-00998:必须使用列别名命名此表达式”,这会稍微有帮助。哇,您不会每天都看到群集问题:)