Datamart - 表类型

时间:2017-09-25 10:08:49

标签: sql sql-server sql-server-2014 datamart

我正在使用DatMart完成任何工具。我有一个表格,其中列出了学生的详细信息。

SystudentID Campus   FirstNAme  LastName
   8          AICASA    Ali       Mehdi
   9          AICASA    Ashka      Patel
  10          AICASA    Jane       Iwuchukwu-Brooks
  11          AICASA    Helen      Oredeko

学生可以注册以下多个课程。(不固定)

AdEnrollID  SyStudentId Program Term
2671    9   AICASA  Fall - 2009 AICASA                 
2537    11  AICASA  Spring - 2009 AICASA               
2634    8   AICASA  Fall - 2010 AICASA                 
1853    10  AICASA  Fall - 2008 AICASA

现在我正在组合这两个表,我想在一个表REP_student中创建我想要的所有细节。但它不应该给我两排。 (请参阅表结构)SQL中是否有任何表类型。  实现它的最佳方法是什么?

SystudentID Campus  FirstNAme   LastName AdEnrollID SyStudentId Program Term

由于

1 个答案:

答案 0 :(得分:2)

您可以使用SQL连接。在这里,我假设你只想显示表1在表2中有相关记录的记录,因此使用INNER JOIN。如果你想要一个不同的结果,你可以根据你的需要试用LEFT JOIN ,RIGHT JOIN OR FULL OUTER JOIN。 / p>

SELECT S.SystudentID ,S.Campus,S.FirstNAme,S.LastName,C.AdEnrollID,C.SyStudentId,C.Program,C.Term 
FROM table1_name S
INNER JOIN table2_name C
ON S.SystudentID  = C.SystudentID;  

如果您想要一个全新的表,我建议您单独创建一个新表,并在INSERT查询中使用它来插入两个表的现有值。

INSERT INTO new_table_name(SystudentID,Campus,FirstNAme,LastName,AdEnrollID,New_SyStudentId,Program,Term)
SELECT S.SystudentID ,S.Campus,S.FirstNAme,S.LastName,C.AdEnrollID,C.SyStudentId,C.Program,C.Term 
FROM table1_name S
INNER JOIN table2_name C
ON S.SystudentID  = C.SystudentID; 

您可能还需要考虑从新表和查询中删除其中一个SyStudentId,因为它很可能是重复值。我刚刚提到它,因为您已经提到过在输出表中需要它。