将数据从另一个表的一列插入到同一个表的多个列中

时间:2017-09-10 20:53:33

标签: mysql sql database insert vertica

我有一个表“WCR(l,j,W,C,R)”,其中包含以下条目。这里,l和j是主键。

enter image description here

我必须将WCR列C的数据插入另一个表C(l,C1,C2),其中l是主键。 C表如下 -

enter image description here

对于每个l,j = 1将插入C1,j = 2将插入C2。 但我无法概括查询。

我尝试过像

这样的陈述
Insert into C Select 1, C from WCR where j=1, C from WCR where j=2;

和插入语句中的子查询,如 -

Insert into C Values (1, Select C from WCR where j=1, Select C from WCR where j=2);

但它们都不适用于Vertica,因为它不支持Insert语句中的子查询,第一个无效。如何有效地将值插入C?

1 个答案:

答案 0 :(得分:2)

一种方法使用join

Insert into C(l, c1, c2)
    select wcr1.l, wcr1.c, wcr2.c
    from wcr wcr1 join
         wcr wcr2
         on wcr1.l = wcr2.l and wcr1.j = 1 and wcr2.j = 2;

另一种方法使用条件聚合:

insert into c(l, c1, c2)
     select l, max(case when j = 1 then c end) as c1, max(case when j = 2 then c end)
     from wcr
     group by l;