我有一个表“WCR(l,j,W,C,R)”,其中包含以下条目。这里,l和j是主键。
我必须将WCR列C的数据插入另一个表C(l,C1,C2),其中l是主键。 C表如下 -
对于每个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?
答案 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;