0

一時的な結果セット (コード内の SOURCE) に格納されたデータを使用して、別のテーブルに SQL Server 2012 を入力しようとしています。以下のコードを実行すると、「The multi-part identifier "SOURCE.JnlDetoaId" could not縛られる」。

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());

here についていくつかのスレッドを読みましたが、それらを私のケースに適用する方法がわかりませんでした。何か助けてください。

4

2 に答える 2

2
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)

問題は、() values() を挿入することにありました。Discarded.JournalDet テーブルに値を挿入します。ソース テーブルの上記のフィールドをそのまま使用することはできません。ソース テーブルから選択する必要があります。

U は、 source.JournalDet .. などを直接使用することはできません。これらは数行上で定義されているためです。

于 2013-10-30T13:23:02.520 に答える
0

以下は私が私の問題をどのように解決したかです。私が望んでいたように、SOURCEは結果セットとしてINSERTに表示されませんでした。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)
于 2013-10-30T16:53:12.980 に答える