2013-01-04 51 views
1

我很新的SQL,我試圖從查詢中創建一個表。但是,當我嘗試執行查詢時遇到了一些錯誤。從SQL中的查詢創建表

我試圖創建一個表名爲"CUM_PRD"有以下欄目:

Gov_fld_nm, 
Gov_pol_nm, 
Oil_pd, 
Gas_pd, 
Water_pd. 

,應與此查詢填充是從下面的查詢值。

SELECT GOV_FLD_NM, 
SUM (OIL_PD), 
SUM (GAS_PD), 
SUM (WAT_PD) 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM 

這個查詢可以正常工作,但是當我嘗試將它包含在創建表查詢中時,它不起作用。我相信我沒有使用正確的語法。

有人可以幫忙嗎?

這是我試圖使用的。

CREATE TABLE CUM_PRD 
(
    GOV_FLD_NM NVARCHAR (50), 
    OIL_PD INT, 
    GAS_PD INT, 
    WAT_PD INT 
) 
INSERT INTO CUM_PRD 
SELECT (
    GOV_FLD_NM, 
    SUM (OIL_PD), 
    SUM (GAS_PD), 
    SUM (WAT_PD) 
) 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM 
+1

請使用一個代碼塊的可讀性 – P1nGu1n

+1

什麼數據庫中創建一個表你正在用嗎? Microsoft SQL Server,MySQL,Oracle ......?你的語法只是稍微偏離了...... CREATE和INSERT語句是分開的,所以必須用分號分隔。我想有人已經用正確的INSERT INTO語法發佈了一個答案,但你非常接近。某些數據庫具有「CREATE TABLE AS SELECT ...」等變體,這可能會有所幫助。 – Chipmonkey

+0

當您指定使用哪個數據庫時,還請爲該數據庫添加標籤 – demongolem

回答

2

如果你想創建一個臨時表,你可以使用SELECT ... INTO...

SELECT GOV_FLD_NM, SUM (OIL_PD), SUM (GAS_PD), SUM (WAT_PD) 
INTO #CUM_PRD 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM 

因爲你的腳本不創建一個臨時表爲什麼不先創建表,然後插入到它:

CREATE TABLE CUM_PRD 
( 
    GOV_FLD_NM NVARCHAR (50), 
    OIL_PD INT, 
    GAS_PD INT, 
    WAT_PD INT 
); 

然後插入數據:

INSERT INTO CUM_PRD (GOV_FLD_NM, OIL_PD, GAS_PD, WAT_PD) 
SELECT GOV_FLD_NM, SUM (OIL_PD), SUM (GAS_PD), SUM (WAT_PD) 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM 
+0

謝謝。這工作完美! – user1949277

+0

@ user1949277歡迎來到StackOverflow,如果這個答案對你有幫助,那麼一定要通過左邊的複選標記來接受它。這將有助於未來的訪問者,你將獲得它的網站聲譽。 – Taryn

0

我只想做

SELECT GOV_FLD_NM, SUM (OIL_PD), SUM (GAS_PD), SUM (WAT_PD) 
INTO CUM_PRD 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM; 

SELECT INTO爲你

0

您應該使用CREATE TABLE TABLE_NAME AS語法

CREATE TABLE CUM_PRD 
AS 
(
SELECT GOV_FLD_NM, SUM (OIL_PD) OIL_PD_SUM, SUM (GAS_PD) GAS_PD_SUM, SUM (WAT_PD) WAT_PD_SUM 
FROM PRE_PRD 
GROUP BY GOV_FLD_NM)