插入到... select
Inserto into ... select
我想在第一个 table "p_edw_tmp.TK_NPS_subdate " 的列中插入值,这些值必须具有相同的标识符 (subs_id=subs_id),但是我的请求在此处插入空值我的请求和我得到的结果
INSERT INTO p_edw_tmp.TK_NPS_subdate (activationDate)
SELECT b.activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS b
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id
结果
survey subno subs_id activationdate
date
NULL NULL NULL 28/03/2013
NULL NULL NULL 14/09/2017
NULL NULL NULL 11/02/2006
NULL NULL NULL 07/02/2007
NULL NULL NULL 20/04/2011
01/07/2015 770611368 60 584 365 NULL
01/07/2015 772682168 3 541 647 NULL
01/07/2015 770827778 6 616 NULL
01/07/2015 774614365 34 444 141 NULL
01/07/2015 796997578 73 457 413 NULL
我想得到这样的结果
01/07/2015 770611368 60 584 365 07/02/2007
01/07/2015 772682168 3 541 647 20/04/2011
这是因为您 select 仅输入列 b.activation_date
并指定列 (activationDate)
名称并仅插入该列。
您需要在 insert 中指定要插入的列名,并 select 它们。因此,您可以将查询更改为:
INSERT INTO p_edw_tmp.TK_NPS_subdate (survey,subno,subs_id,activationdate)
SELECT b.survey,b.subno,b.subs_id,b.activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS b
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id
您似乎想更新现有数据:
UPDATE p_edw_tmp.TK_NPS_subdate
FROM
( SELECT subs_id, activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS
) AS b
SET activationDate = src.activationDate
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id
我想在第一个 table "p_edw_tmp.TK_NPS_subdate " 的列中插入值,这些值必须具有相同的标识符 (subs_id=subs_id),但是我的请求在此处插入空值我的请求和我得到的结果
INSERT INTO p_edw_tmp.TK_NPS_subdate (activationDate)
SELECT b.activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS b
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id
结果
survey subno subs_id activationdate
date
NULL NULL NULL 28/03/2013
NULL NULL NULL 14/09/2017
NULL NULL NULL 11/02/2006
NULL NULL NULL 07/02/2007
NULL NULL NULL 20/04/2011
01/07/2015 770611368 60 584 365 NULL
01/07/2015 772682168 3 541 647 NULL
01/07/2015 770827778 6 616 NULL
01/07/2015 774614365 34 444 141 NULL
01/07/2015 796997578 73 457 413 NULL
我想得到这样的结果
01/07/2015 770611368 60 584 365 07/02/2007
01/07/2015 772682168 3 541 647 20/04/2011
这是因为您 select 仅输入列 b.activation_date
并指定列 (activationDate)
名称并仅插入该列。
您需要在 insert 中指定要插入的列名,并 select 它们。因此,您可以将查询更改为:
INSERT INTO p_edw_tmp.TK_NPS_subdate (survey,subno,subs_id,activationdate)
SELECT b.survey,b.subno,b.subs_id,b.activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS b
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id
您似乎想更新现有数据:
UPDATE p_edw_tmp.TK_NPS_subdate
FROM
( SELECT subs_id, activation_date
FROM P_EDW_BO_UNIVERSE.DW_SUBNOS
) AS b
SET activationDate = src.activationDate
WHERE p_edw_tmp.TK_NPS_subdate.subs_id=b.subs_id