2014-11-14 20 views
0

在完整的披露中,本週我使用SQL被引入到一個項目中,不幸的是,直到現在,在基本查詢之外使用它的經驗很少。我將開始研究,但真的可以在短期內在這裏使用一些幫助。從多個表中的列創建新表

在這個例子中,這些表格被命名爲Person_PRPerson_CME

兩個表

  • 包含與同一個人信息和包含相同的人的標識符(record_num和person_num)。
  • 按record_num和person_num排序,因此它們是完全對齊的。

表:

Person_PR

record_num, person_num, pr_variable1, pr_variable2 

Person_CME

record_num, person_num, cme_variable1, cme_varable2 

我想爲新表Person_new包含record_num, person_num, cme_variable1, cme_varable2, pr_variable1 and pr_variable2

  • cme_變數將來自Person_CME表和
  • pr_變數將來自Person_PR表。

新表Person_new

record_num, person_num, cme_variable1, cme_varable2, pr_variable1, pr_variable2 

我試圖做到這一點同時使用插入和創建表作爲選擇的方法,但我無法得到任何正常工作。我希望有人能讓我開始朝正確的方向發展。預先感謝您花時間閱讀本文以及您可能提供的任何幫助。

+0

爲什麼你想複製數據庫中的數據? – Dai 2014-11-14 19:30:08

+0

這些表有多大? – Siyual 2014-11-14 19:31:44

+0

您應該避免使用所需列創建數據的副本。你應該創建一個包含你想要的數據的查詢。另外,表格沒有訂單。訂購數據的唯一方法是在您的select語句中放置一個order by子句。 – 2014-11-14 19:42:33

回答

1

創建SQL Server中的新表的語法

SELECT p.record_num 
    , p.person_num 
    , c.cme_variable1 
    , c.cme_variable2 
    , p.pr_variable1 
    , p.pr_variable2 
INTO new_table 
FROM Person_PR p 
INNER JOIN Person_CME c 
    ON p.person_num = c.person_num 
    AND p.record_num = b.record_num 

但是,它可能更合理使用視圖來呈現你想要的數據。

+0

感謝FJT和其他人的貢獻。這正是我所期待的。我應該補充說,我想把數據輸入到正在創建的表中,而不是像我發出聲音一樣調用它/查看它。再次感謝,這將是一個巨大的幫助。 – photec 2014-11-17 15:44:26

0

你要使用存儲過程,而不是一個新表:

CREATE PROCEDURE [dbo].GetPersonData 

AS 
BEGIN 

    SET NOCOUNT ON; 

    SELECT cme.record_num , 
      cme.person_num , 
      cme.cme_variable1 , 
      cme.cme_variable2 , 
      pr.prvariable1 , 
      pr.prvariable2 
    FROM Person_CME cme 
      INNER JOIN Person_PR pr ON cme.record_num = pr.record_num 
             AND cme.person_num = pr.person_num 

END 

然後,您可以使用存儲過程作爲您訪問的形式記錄源。沒有必要創建一個新的表格,這個表格需要定期刷新並存儲重複的數據。如果適用的話,你也可以看看。

0

在SSMS的對象資源管理器中,您可以右鍵單擊表格,腳本表格作爲,創建到新建查詢編輯器窗口。創建第三個查詢窗口,複製並粘貼要從每個表中獲取的字段,然後執行腳本以創建新表。

您也可以使用SELECT語句做到這一點:

SELECT record_num, person_num, cme_variable1, cme_varable2, pr_variable1, and pr_variable2 
INTO Person_new 
FROM Person_PR 
JOIN Person_CME ON 1=2 

從那裏,你可以通過對象資源管理器編輯。

如果你想包括兩個表中的數據,使之成爲視圖,而不是試圖維持一個單獨的表:

CREATE VIEW Person_new AS 
SELECT PR.record_num, person_num, cme_variable1, cme_varable2, pr_variable1, and pr_variable2 
FROM Person_PR AS PR 
JOIN Person_CME AS CME ON PR.record_num = CME.record_num AND PR.person_num = CME.person_num 

您通過在任何SELECT語句的ORDER BY子句中維持秩序,表不是「訂購」