2013-10-30 48 views
0

我試圖使用存儲在臨時結果集(源代碼中)的數據來填充另一個表與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()); 

我讀了一些關於這裏的線程,但沒有看到如何將它們應用到我的情況。 請幫忙嗎?

+0

嘗試使用別名。如:從dbo.Journal作爲j,來源爲s。 – user2919277

+0

我試過了,但在「SOURCE.JnlDetoaId」的地方發生了與「s.JnlDetoaId」相同的錯誤(導致SOURCE被別名爲s)。我想要的是從結果集中的第一個SELECT獲取數據,因爲它是一個臨時表,參數或其他事物 - 這樣我就可以在進一步的表達式中使用該結果集,如第一個SELECT之後的IF。 –

+0

源是你的另一個表名?你有定義這張表嗎? – user2919277

回答

0

以下是我如何解決我的問題。根據我的意願,INSERT中沒有看到SOURCE作爲結果集。這對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) 
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) 

問題出在你insert()values()。 將值插入到Discarded.JournalDet表中。你不能只使用源表中的上述字段。你必須從源表中選擇。

你不能只是用戶source.JournalDet ..和soo上,直接只是因爲他們定義了幾行以上。

+0

試試這個,讓我知道你是否被卡住了。我無法執行,因爲我沒有表結構。 – user2919277

相關問題