2013-10-30 2 views
0

임시 결과 집합 (코드의 SOURCE)에 저장된 데이터를 사용하여 SQL Server 2012로 다른 테이블을 채우려고합니다. 아래 코드를 실행할 때 "다중 부분 식별자"SOURCE.JnlDetoaId "를 바인딩 할 수 없습니다"오류가 발생했습니다.다중 부분 식별자 "field"를 바인딩 할 수 없습니다.

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

별칭을 사용해보세요. like : FROM dbo.Journal은 j, SOURCE는 s입니다. – user2919277

+0

"SOURCE.JnlDetoaId"의 위치에서 "s.JnlDetoaId"와 동일한 오류가 발생했습니다 (SOURCE가 s로 별칭 지정됨). 필자가 원하는 것은 첫 번째 SELECT의 데이터를 결과 집합에 포함시키는 것입니다. 즉, 임시 테이블, 매개 변수 또는 다른 것으로 - 첫 번째 SELECT 다음에 IF와 같은 추가 식에서 해당 결과 집합을 사용할 수 있습니다. –

+0

소스가 다른 테이블 이름입니까? U이 테이블을 정의 했습니까? – user2919277

답변

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

값()에 삽입하는 데 문제가있었습니다. Discarded.JournalDet 테이블에 값을 삽입하려면 다음을 수행하십시오. 소스 테이블에서 위의 필드를 사용할 수는 없습니다. 소스 테이블에서 선택해야합니다.

U는 위의 몇 줄을 정의했기 때문에 source.JournalDet .. 및 soo를 직접 사용할 수 없습니다.

+0

이 기능을 사용하면 문제가 있는지 알 수 있습니다. 나는 테이블 구조가 없으므로 실행할 수 없습니다. – user2919277

관련 문제