SQL将具有不同列的多个表合并为一个

时间:2014-08-11 16:14:08

标签: sql sql-server database merge datatables

我需要从5个表创建一个主表,困难在于表中的同一列可能有不同的名称。所以例如

为简单起见,我只是举两个表的例子

+----+----+
| 1  | 2  |
+----+----+
| PO | P  |
| VE | V  |
| TE | TE |
| LO | LO |
| IN |    |
| D  |    |
| X  |    |
| Y  |    |
|    | A  |
|    | B  |
|    | C  |
+----+----+

因此您可以看到PO没有与表2中相应值相同的列名,但它们是相同的记录。我需要将这两个表聚合成一个主表。

我所做的是从具有最多重复列的表开始,我正在尝试将其他表合并到其中。如果只在一个表上找到一列,我希望其他字段显示为null。我也不想要任何重复。希望有人可以帮助我!

干杯

1 个答案:

答案 0 :(得分:1)

  

但他们是同一个记录。

不,他们不是。

但是,它们可以表示相同业务实体的不同视图。要“合并”它们,您必须首先指定它们之间的JOIN标准。

鉴于它是

one.PO = two.P.

然后你必须写一个像

这样的SQL语句
SELECT one.PO AS ID, 
       one.VE, 
       /*same for TE, LO, IN, D, X, Y, */ 
       two.A, 
       two.B, 
       two.C
  INTO t_what_the_frak_the_new_table_shall_be_called
  FROM t_what_the_frak_table_1_is_called AS one,
       JOIN t_what_the_frak_table_2_is_called AS two 
       ON one.PO = two.P;
GO