обновить источник копирования запроса на доступ к таблице назначения 2010 - PullRequest
0 голосов
/ 07 декабря 2018

просто пытается выяснить, как сделать следующее:

У меня есть 2 таблицы (tbl_WBint: место назначения и temp_Agtpinwb: источник) и мне нужно использовать запрос на обновление, чтобы скопировать поля в tbl_WBint.Проблема изначально заключалась в том, что я использовал запрос для инициализации всех столбцов в tbl_WBint с 0 перед применением запроса на обновление.После того, как я использую приведенный ниже запрос на обновление SQL, он заменяет некоторые строки полями из таблицы temp_Agtpinwb, что я и собираюсь сделать, но остальные строки, которые имели ноль во время запроса инициализации, являются пробелами.Есть ли способ выполнить запрос на обновление только в том случае, если в исходной таблице есть записи, которые должны быть обновлены в целевой таблице, при этом другие значения в целевой таблице сохраняются как 0 все еще?

Надеюсь, что имеет смысл.

UPDATE tbl_WBint 
INNER JOIN temp_Agtpinwb 
    ON tbl_WBint.[Agent Pin] = temp_Agtpinwb.[Agent Pin]
SET 
    tbl_WBint.[Agent Pin] = [temp_Agtpinwb]![Agent Pin], 
    tbl_WBint.[WB Current] = [temp_Agtpinwb]![WB Current], 
    tbl_WBint.[WB Prior Year] = [temp_Agtpinwb]![WB Prior Year],
    tbl_WBint.[WB Prior Year 3] = [temp_Agtpinwb]![WB Prior Year 3],
    tbl_WBint.[WB Jan Count] = [temp_Agtpinwb]![WB Jan Count], 
    tbl_WBint.[WB Feb Count] = [temp_Agtpinwb]![WB Feb Count],
    tbl_WBint.[WB Mar Count] = [temp_Agtpinwb]![WB Mar Count], 
    tbl_WBint.[WB Apr Count] = [temp_Agtpinwb]![WB Apr Count], 
    tbl_WBint.[WB May Count] = [temp_Agtpinwb]![WB May Count],
    tbl_WBint.[WB Jun Count] = [temp_Agtpinwb]![WB Jun Count], 
    tbl_WBint.[WB Jul Count] = [temp_Agtpinwb]![WB Jul Count], 
    tbl_WBint.[WB Aug Count] = [temp_Agtpinwb]![WB Aug Count], 
    tbl_WBint.[WB Sep Count] = [temp_Agtpinwb]![WB Sep Count],
    tbl_WBint.[WB Oct Count] = [temp_Agtpinwb]![WB Oct Count],
    tbl_WBint.[WB Nov Count] = [temp_Agtpinwb]![WB Nov Count], 
    tbl_WBint.[WB Dec Count] = [temp_Agtpinwb]![WB Dec Count];

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Похоже, что некоторые значения из temp_Agtpinwb являются нулевыми значениями и перезаписывают ваши нулевые значения, вы можете использовать

UPDATE tbl_WBint 
INNER JOIN temp_Agtpinwb 
    ON tbl_WBint.[Agent Pin] = temp_Agtpinwb.[Agent Pin]
SET 
    tbl_WBint.[Agent Pin] = [temp_Agtpinwb]![Agent Pin], 
    tbl_WBint.[WB Current] = Nz([temp_Agtpinwb]![WB Current],0), 
    tbl_WBint.[WB Prior Year] = Nz([temp_Agtpinwb]![WB Prior Year],0),
    tbl_WBint.[WB Prior Year 3] = Nz([temp_Agtpinwb]![WB Prior Year 3],0),
    tbl_WBint.[WB Jan Count] = Nz([temp_Agtpinwb]![WB Jan Count],0), 
    tbl_WBint.[WB Feb Count] = Nz([temp_Agtpinwb]![WB Feb Count],0),
    tbl_WBint.[WB Mar Count] = Nz([temp_Agtpinwb]![WB Mar Count],0), 
    tbl_WBint.[WB Apr Count] = Nz([temp_Agtpinwb]![WB Apr Count],0), 
    tbl_WBint.[WB May Count] = Nz([temp_Agtpinwb]![WB May Count],0),
    tbl_WBint.[WB Jun Count] = Nz([temp_Agtpinwb]![WB Jun Count],0), 
    tbl_WBint.[WB Jul Count] = Nz([temp_Agtpinwb]![WB Jul Count],0), 
    tbl_WBint.[WB Aug Count] = Nz([temp_Agtpinwb]![WB Aug Count],0), 
    tbl_WBint.[WB Sep Count] = Nz([temp_Agtpinwb]![WB Sep Count],0),
    tbl_WBint.[WB Oct Count] = Nz([temp_Agtpinwb]![WB Oct Count],0),
    tbl_WBint.[WB Nov Count] = Nz([temp_Agtpinwb]![WB Nov Count],0), 
    tbl_WBint.[WB Dec Count] = Nz([temp_Agtpinwb]![WB Dec Count],0);

NZ заменит ваши нулевые значения на нули.Если это так, я думаю, вам не понадобится и «инициализирующий запрос».

0 голосов
/ 08 декабря 2018

Просто используйте условную логику с IIF(), чтобы проверить NULL, и либо сохраните исходное значение, либо обновите значение источника.И попробуйте использовать псевдонимы таблиц, как показано ниже, чтобы сократить длинные имена таблиц.

UPDATE tbl_WBint w
INNER JOIN temp_Agtpinwb a
    ON w.[Agent Pin] = a.[Agent Pin]
SET 
    w.[Agent Pin] = IIF(a.[Agent Pin] IS NULL, w.[Agent Pin], a.[Agent Pin]), 
    w.[WB Current] = IIF(a.[WB Current] IS NULL, w.[WB Current], a.[WB Current]), 
    w.[WB Prior Year] = IIF(a.[WB Prior Year] IS NULL, w.[WB Prior Year], a.[WB Prior Year]),
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...