제목이 잘못되었습니다. 사과드립니다. SQL Server - 조건부 조인이 null이 아닌 테이블에
나는 두 개의 다른 테이블MasterTable 서브 SubTableArchive
그래서, MasterTable는 ID 필드를 포함 중 하나에 테이블을 가입하려합니다. SubTable 및 SubTableArchive에는 조인에 대한 MasterTableId 필드가 있습니다.
그러나 데이터는 이러한 SubTables 중 하나에만 존재합니다. 그래서 나는 테이블에 데이터가있는 테이블에 가입하고 싶습니다.
하지만 내가 알고있는 유일한 방법은 선택하는 모든 필드에 isnull을 사용하여 선택하는 것입니다. 그리고 빠르게 읽고 (쓰기도) 복잡해집니다. 필드 중 일부는 이미 포장되어 특히 때문에 ISNULL의
SELECT M.Id, ISNULL(S.Field1, SA.field1), ISNULL(S.field2, SA.Field2),
SUM(CASE WHEN (ISNULL(S.Finished,SA.Finished)=1 AND ISNULL(ISNULL(S.ItemCode,SA.ItemCode),'')='') THEN 1 WHEN (ISNULL(S.Finished,SA.Finished)=0 AND ISNULL(ISNULL(S.AltItemCode,SA.AltItemCode),'')='') THEN 1 ELSE 0 END) AS SummaryField
FROM MAsterTable M
LEFT OUTER JOIN SubTable S ON S.MasterTableId = M.Id
LEFT OUTER JOIN SubTableArchive SA ON S.MasterTableId = M.Id
GROUP BY M.Id, ISNULL(S.Field1, SA.field1), ISNULL(S.field2, SA.Field2)
그래서 작업,하지만 꽤되지 않습니다. 샘플은 있지만 실제 쿼리는 길고 복잡합니다.
SQL에 일종의 조건부 조인 기능이 내장되어 있었으면 좋겠다. 내가하려는 일을하고 쿼리를 조금 더 우호적 인 상태로두기를 바란다.