Вставить в... выбрать

Я хочу вставить значения в столбец моей первой таблицы "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

2 ответа

Решение

Похоже, вы хотите обновить существующие данные:

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 

Это потому, что вы выбираете только столбец b.activation_date и указав столбец (activationDate) имя и вставка только в этот столбец.

Вам нужно указать имена столбцов, которые вы хотите вставить во вставку, и выбрать их. Таким образом, вы можете изменить свой запрос на что-то вроде:

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 
Другие вопросы по тегам