2014-10-14 2 views
0

Я пытаюсь вставить столбец данных из одной таблицы в другую. Таблица, которую я пытаюсь вставить, называется MU.PROVIDERS. Таблица, которую я вставляю, называется Sheet1 $. (Импортировано из листа Excel). У столбцов, которые у них есть общего, называется «NPI», ключ, который является общим для всех поставщиков, поэтому я пытаюсь вставить на основе этого ключа. Не каждое значение NPI в Sheet1 $ помещает соответствующее значение RELAY_ID в таблицу «MU.PROVIDERS». (Есть еще НПИ в «MU.PROVIDERS», чем в Лист1 $) Мой запрос выглядит следующим образом:SQL-сервер, вставляющий значения из одной таблицы в другую

INSERT INTO [MU.PROVIDERS] (RELAY_ID) 
    SELECT h.RELAY_ID 
FROM Sheet1$ as h JOIN 
[MU.PROVIDERS] as i ON h.NPI = i.NPI; 

Я получаю сообщение об ошибке: Не удается вставить значение NULL в столбец «НПИ», таблица " MU.PROVIDERS '; столбец не допускает нулей. INSERT терпит неудачу.

У меня есть столбец NPI как первичный ключ в таблице «MU.PROVIDERS», но я ничего не вставляю в этот столбец, поэтому я не понимаю проблему.

+3

Вы используете инструкцию 'Insert'. Это добавит новую запись. Если вы укажете только одно поле в 'insert', остальные поля в таблице будут автоматически установлены в NULL для этой новой записи. – JNevill

ответ

0

Я думаю, вы хотите update. Insert добавляет новые строки. Update изменяет значения столбцов:

UPDATE i 
    SET relay_id = h.relay_id 
    FROM mu.Providers i JOIN 
     Sheet1$ h 
     ON h.NPI = i.NPI; 
+0

Да, это сработало спасибо. Я знал, что это было что-то простое, работа над запросом работала нормально. – bsquared

0

Вы можете определили столбец НПИ в качестве первичного ключа. Но первичный ключ нуждается в уникальном значении для идентификации строки. Если вы не указали значение с помощью инструкции INSERT, вы должны определить столбец NPI как IDENTITY (1,1), чтобы автоматически создать новое значение идентификатора.

Смежные вопросы