No es que estés haciendo algo mal, esto tiene que ver con la forma como declaras el primary key en la primera tabla.
Si te fijas a jc3000 no le da problemas, ya que incluye el primary key como parte del campo.
Pero si hago esto que es funcionalmente lo mismo, se replica el escenario que indicas.
Código SQL:
Ver originalSQL> CREATE TABLE prueba1
2 ( a NUMBER,
3 b NUMBER,
4 c NUMBER,
5 CONSTRAINT pkprueba1 PRIMARY KEY(a));
Tabla creada.
SQL> CREATE TABLE prueba2 AS SELECT *FROM prueba1 WHERE 1=0;
Tabla creada.
SQL> DESC prueba1
Nombre ┐Nulo? Tipo
----------------------------------------- -------- -------------
A NOT NULL NUMBER
B NUMBER
C NUMBER
SQL> DESC prueba2
Nombre ┐Nulo? Tipo
----------------------------------------- -------- -------------
A NUMBER
B NUMBER
C NUMBER
SQL>
Para pasarlo bien, lo que puedes hacer es crear la segunda tabla así.
Código SQL:
Ver originalCREATE TABLE prueba2 (a NOT NULL,b,c) AS SELECT *FROM prueba1 WHERE 1=0;
saludos