簡體   English   中英

SQL創建表列AS SELECT FROM OTHER TABLE

[英]SQL create table column AS SELECT FROM OTHER TABLE

我的問題是我無法基於其他表的2列創建適當的DDL語句“創建表”。

最終表應如下所示:

CREATE TABLE PRACOWNICY_ZESPOLY AS
  SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) AS ROCZNA_PLACA FROM PRAC;

ALTER TABLE PRACOWNICY_ZESPOLY 
  ADD (
      NAZWISKO VARCHAR(20),
      POSADA VARCHAR(20),
      ZESPOL NUMBER(4),
      ADRES_PRACY VARCHAR(20) );

我正在嘗試這樣的事情:

CREATE TABLE PRACOWNICY_ZESPOLY (
  NAZWISKO VARCHAR(20),
  POSADA VARCHAR(20),
  ZESPOL NUMBER(4),
  ADRES_PRACY VARCHAR(20),
  ROCZNA_PLACA NUMBER(6,2) AS (SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) FROM PRAC));

結果:

SQL錯誤:ORA-00936:缺少表達式

CREATE TABLE PRACOWNICY_ZESPOLY (
  NAZWISKO VARCHAR(20),
  POSADA VARCHAR(20),
  ZESPOL NUMBER(4),
  ADRES_PRACY VARCHAR(20))
  AS SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) FROM PRAC;

結果:

SQL錯誤:ORA-01773:可能未在此CREATE TABLE中指定列數據類型

CREATE TABLE PRACOWNICY_ZESPOLY AS
  SELECT 12*PLACA_POD + NVL(PLACA_DOD,0) AS ROCZNA_PLACA FROM PRAC, 
  (NAZWISKO VARCHAR(20),
  POSADA VARCHAR(20),
  ZESPOL NUMBER(4),
  ADRES_PRACY VARCHAR(20));

結果:

SQL錯誤:ORA-00907:缺少右括號

您需要一個createinsert語句:

CREATE TABLE PRACOWNICY_ZESPOLY 
(
  ROCZNA_PLACA  number, 
  NAZWISKO      VARCHAR(20),
  POSADA        VARCHAR(20),
  ZESPOL        NUMBER(4),
  ADRES_PRACY   VARCHAR(20)
);

insert into PRACOWNICY_ZESPOLY (ROCZNA_PLACA) 
SELECT 12 * PLACA_POD + NVL(PLACA_DOD,0) 
FROM PRAC;

我在這個問題上找到了可行的解決方案。

您需要將get_ddl與CTAS語法結合使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM