db2 INSERT INTO来自多个源表的目标表

时间:2016-11-08 17:54:26

标签: sql db2 insert-into

我有两个源表,TABLE_1TABLE_2

他们每个人都有一列我想要抓取的数据,每一行都有完全相同的行数,我希望在第三个表中成对匹配,如下所示:

Column_A | Column_B
    Val1 | ValA
    Val2 | ValB
    Val3 | ValC
    Val4 | ValD

使用此语法时,Table_3中的数据不匹配,Column_B中的行正在填充缺少的字段,而不是排在Column_A值旁边。

INSERT INTO Table_3 (Column_A)
SELECT Column_A FROM Table_1;
INSERT INTO Table_3 (Column_B)
SELECT Column_A FROM Table_2;

1 个答案:

答案 0 :(得分:2)

首先,仅仅因为你有相同的行并不意味着你可以很容易地将它们组合起来。你可以把它们加在一起:

INSERT INTO Table_3 (Column_A, Column_B)
    SELECT t1.Column_A, t2.Column_B
    FROM Table_1 t1 JOIN
         Table_2 t2
         ON t1.?? = t2.??

您的问题并未说明JOIN键应该是什么。

如果您没有JOIN个密钥但需要任意对,则可以使用row_number()分配join密钥:

INSERT INTO Table_3 (Column_A, Column_B)
    SELECT t1.Column_A, t2.Column_B
    FROM (SELECT t1.*, ROW_NUMBER() OVER (ORDER BY Column_A) as seqnum Table_1 t1
         ) JOIN
         (SELECT t2.*, ROW_NUMBER() OVER (ORDER BY Column_B) as seqnum Table_2 t2
         ) t2
         ON t1.seqnum = t2.seqnum;