Sql server 2012 “多部分标识符”;“字段”;无法约束

Sql server 2012 “多部分标识符”;“字段”;无法约束,sql-server-2012,temporary-objects,Sql Server 2012,Temporary Objects,我正在尝试使用存储在临时结果集中的数据(代码中的源代码)用SQL Server 2012填充另一个表。当执行下面的代码时,我得到错误“多部分标识符”SOURCE.JnlDetoaId“无法绑定” 我在这里读了一些文章,但没有看到如何将它们应用到我的案例中。 需要帮忙吗 SELECT Journaldet.*, Agency.ID_Agency INTO sourceTable FROM Journaldet inner join Agency ON Agency.Agency_ID = Jo

我正在尝试使用存储在临时结果集中的数据(代码中的源代码)用SQL Server 2012填充另一个表。当执行下面的代码时,我得到错误“多部分标识符”SOURCE.JnlDetoaId“无法绑定”

我在这里读了一些文章,但没有看到如何将它们应用到我的案例中。 需要帮忙吗

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)
问题在于插入()值()。 将值插入丢弃的.JournalDet表。不能仅使用源表中的上述字段。您必须从源表中进行选择


你不能只使用source.JournalDet。。和soo-on,仅仅是因为它们被定义在上面几行

下面是我如何解决问题的。源代码未按我的要求作为结果集显示在插入中。插页没什么用。我只是以这样一种方式重写了查询,结果集可以在INSERT中看到。非常感谢你

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)

尝试使用别名。比如:从dbo.Journal作为j,SOURCE作为s。我尝试过,但在“SOURCE.jnledtoaid”的位置出现了与“s.jnledtoaid”相同的错误(因为SOURCE被别名为s)。我想要的是在结果集中有来自第一个SELECT的数据—可以是临时表、参数或其他东西—这样我就可以在进一步的表达式中使用该结果集,比如第一个SELECT后面的IF。源是另一个表名吗?您已定义此表?SOURCE是我要在其中存储第一次选择的数据的结果集。首先,如果SORUCE是您的表名,请将其更改为类似JOIN的关键字。请尝试此操作,并在遇到问题时通知我。我无法执行,因为我没有表结构。
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)