在执行现有查询时插入列

时间:2017-07-12 15:11:09

标签: postgresql

我在下面有这个查询,根据特定条件解析列中的名称。我想扩充此查询,以便包含一个额外的列,该列是adwords_final表中的实际列," Key"。

insert into mk_kw
with a(v) as (
             select "Campaign"
             from adwords_final
             ), 
pre as (
        select split_part(v, '{', 1) a,split_part(v, '{', 2) b
        from a
        )
select split_part(a, '-', 1) ca,
       split_part(a, '-', 2) cb,
       split_part(split_part(a, '-', 3), '|', 1) cc,
       split_part(split_part(a, '-', 3),
       split_part(split_part(a, '-', 3), '|', 1) || '|', 2) cd,
       '{' || b ce
from pre;

当前输入表如下所示,"广告系列"是当前的行列

Campaign                           |Key |
-----------------------------------+--------+
ES-SRC-IOT|Connectivity|SIM|USA|{e}|ES-SRC-IOT|Connectivity|SIM|USA|{e}2017-5

目前的输出如下所示

 ca | cb  |    cc     |             cd             |  ce
----+-----+-----------+----------------------------+------
 ES | SRC | IOT       |  Connectivity | SIM | USA  | {e}

我想添加" Key"列为此输出中的第一列。

是否可以添加此内容,还是我必须完全废弃此查询?

干杯。

1 个答案:

答案 0 :(得分:0)

TRUNCATE mk_kw;
INSERT INTO mk_kw
with a(v,g) as (
select "Campaign","Key"
from adwords_final
), pre as (
select split_part(v, '{', 1) a,split_part(v, '{', 2) b,g||'' "Key"
from a 
)
select
"Key",
split_part(a, '-', 1) ca,
split_part(a, '-', 2) cb,
split_part(split_part(a, '-', 3), '|', 1) cc,
split_part(split_part(a, '-', 3),
split_part(split_part(a, '-', 3), '|', 1) || '|', 2) cd,
'{' || b ce

from pre;