Не удалось связать многокомпонентный идентификатор "поле"

Я пытаюсь использовать данные, хранящиеся во временном наборе результатов (SOURCE в коде), чтобы заполнить другую таблицу с SQL Server 2012. При выполнении приведенного ниже кода я получаю сообщение об ошибке "Не удалось определить идентификатор из нескольких частей"SOURCE.JnlDetoaId" связывать".

SELECT Journaldet.*, Agency.ID_Agency INTO SOURCE
FROM Journaldet 
inner join Agency 
ON Agency.Agency_ID = Journaldet.AgenceId

IF  ((SELECT COUNT(Journal.Journal_ID) FROM dbo.Journal, SOURCE WHERE Journal_ID =      SOURCE.JournalId)=0)
INSERT INTO Discarded.JournalDet(JournalDet_ID, Amount, Sensoa, DetoaId,    ID_Agency, JournalId, Appli_Source, ReasonDiscarded, DateDiscarded) 
VALUES (SOURCE.JnlDetoaId, SOURCE.Amount, SOURCE.Sensoa, SOURCE.DetoaId,    SOURCE.ID_Agency, JournalId, 'GameApps','Member not yet inserted', GETDATE());

Я прочитал некоторые темы здесь, но не видел, как применить их к моему делу. Любая помощь, пожалуйста?

2 ответа

Решение

Ниже описано, как я решил свою проблему. ИСТОЧНИК не был замечен в INSERT как набор результатов, как я хотел. Это не было ничего для вставки. Я просто переписал запросы таким образом, чтобы результирующий набор был виден в INSERT. Большое спасибо user2919277.

INSERT INTO  Discarded.JournalDet 
(JournalDet_ID, Amount, Sensoa, DetoaId, ID_Agency, JournalId, Appli_Source,      ReasonDiscarded, DateDiscarded)
SELECT SOURCE1.JnlDetoaId, Amount,Sensoa,DetoaId,ID_Agency,JournalId, 'GameApps', 'Member not yet inserted', GETDATE() 
FROM Journaldet  AS SOURCE1 
inner join Agency AS SOURCE2 ON SOURCE2.Agency_ID = SOURCE1.AgenceId
WHERE  ((SELECT COUNT(Journal.Journal_ID) FROM dbo.Journal WHERE dbo.Journal.Journal_ID = SOURCE1.JournalId)=0)
SELECT Journaldet.*, Agency.ID_Agency INTO sourceTable
FROM Journaldet 
inner join Agency 
ON Agency.Agency_ID = Journaldet.AgenceId;

IF ((SELECT COUNT(j.Journal_ID) FROM dbo.Journal as j, sourceTable s WHERE j.Journal_ID = s.JournalId) = 0)
    INSERT INTO Discarded.JournalDet(JournalDet_ID, Amount, Sensoa, DetoaId,ID_Agency, JournalId, Appli_Source, ReasonDiscarded, DateDiscarded) 
    VALUES (select JnlDetoaId, Amount, Sensoa, DetoaId,  ID_Agency, JournalId, 'GameApps','Member not yet inserted', GETDATE() FROM sourceTable)

Проблема была в том, что вы вставляете () значения (). Чтобы вставить значения в вашу таблицу Discarded.JournalDet. Вы не можете просто использовать вышеуказанные поля из исходной таблицы. Вы должны выбрать из исходной таблицы.

Вы не можете просто использовать source.JournalDet .. и soo on, только потому, что они определены несколькими строками выше.

Другие вопросы по тегам