将三个表的常用列合并为一列

时间:2014-07-12 15:44:18

标签: sql sql-server join

我有三张桌子,假设

表1


  1. id
  2. DDOCode
  3. DesignationCode
  4. 指定
  5. 表2


    1. id
    2. DDOCode
    3. DesignationCode
    4. BPS
    5. 指定
    6. 表3


      1. id
      2. DDOCode
      3. DesignationCode
      4. BPS
      5. 指定
      6. 这看起来非常奇怪三个表中有相同的字段,但是有一种情况我必须将三个表合并为一个,我主要关注的是Designation和BPS,我希望将它们合并到一个表中一个查询或存储过程,我不能应用左外连接,右外连接,也不能应用内连接,因为我想要所有三个表中的所有值,我认为会有一个存储过程可以解决我的问题。

        请在这方面协助我。

2 个答案:

答案 0 :(得分:0)

您可以使用union allgroup byfull outer join执行此操作。因为您有两个以上的表,union all实际上更容易。你不清楚最终的结果,所以这可能就足够了:

select id, DDOCode, DesignationCode, BPS, Designation
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation
       from table1
      ) union all
      (select id, DDOCode, DesignationCode, BPS, Designation
       from table2
      ) union all
      (select id, DDOCode, DesignationCode, NULL as BPS, Designation
       from table3
      )
     ) t123

对于你提出的问题:

select distinct DDOCode,DesignationCode, Designation
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation
       from table1
      ) union all
      (select id, DDOCode, DesignationCode, BPS, Designation
       from table2
      ) union all
      (select id, DDOCode, DesignationCode, NULL as BPS, Designation
       from table3
      )
     ) t123;

答案 1 :(得分:0)

您可以使用UNION合并所有表,而不是松散任何行并在单独的视图中显示它们。如果你想将它们放在另一个表中,你也可以插入。

CREATE VIEW view_name AS(
    SELECT * FROM TABLE1 
    UNION
    SELECT * FROM TABLE2 
    UNION
    SELECT * FROM TABLE3)