2014-11-14 40 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子句中维持秩序,表不是“订购”