2013-04-23 1 views
2

내 테이블 작업에서 몇 행을 반환하려고하지만 JobProducts 테이블 (각 JobProduct의 기한이있는 테이블)에서 다음 기한을 반환하려고합니다.SQL 교차 결합 오류 다중 부품 식별자를 바인딩 할 수 없습니다.

는 내가 지금까지

SELECT J.CustomerID, J.JobID, J.Status, 
J.Deleted, J.JobNo, Customers.CompanyName AS [Company], 
J.DateCreated AS [Date Created], derivedtbl_1.DueDate AS [Due Date] 
FROM Jobs J 
LEFT OUTER JOIN 
Customers ON J.CustomerID = Customers.CustomerID CROSS JOIN 
(SELECT TOP (1) DueDate, JobProductID, JobID, ProductID, DepartmentID 
FROM  JobProducts AS JobProducts_1 
WHERE JobProducts_1.JobID = J.JobID 
ORDER BY DueDate) 
AS derivedtbl_1 

다음이 있지만 오류 다중 부분 식별자 "J.JobID는"구속 수 없습니다를 얻을.

어떤 도움을 많이 주시면 감사하겠습니다.

답변

5

오류는 SQL Server에서 발생한 것 같습니다. 난 당신이 CROSS APPLYCROSS JOIN (느릅 나무는 카티 제품입니다) 혼동 생각 :

SELECT J.CustomerID, 
     J.JobID, 
     J.Status, 
     J.Deleted, 
     J.JobNo, 
     Customers.CompanyName AS [Company], 
     J.DateCreated AS [Date Created], 
     derivedtbl_1.DueDate AS [Due Date] 
FROM Jobs J 
LEFT JOIN Customers 
    ON J.CustomerID = Customers.CustomerID 
CROSS APPLY (SELECT TOP (1) DueDate, 
          JobProductID, 
          JobID, 
          ProductID, 
          DepartmentID 
      FROM JobProducts AS JobProducts_1 
      WHERE JobProducts_1.JobID = J.JobID 
      ORDER BY DueDate) 
AS derivedtbl_1 
0

당신이 적용 십자가는 십자가에 가입 변경하려고 할 수 있습니다

CROSS APPLY 
(SELECT TOP (1) DueDate, JobProductID, JobID, ProductID, DepartmentID 
FROM  JobProducts AS JobProducts_1 
WHERE JobProducts_1.JobID = J.JobID 
ORDER BY DueDate) 
관련 문제