插入到... 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