2017-12-22 9 views
2

나는 등 회사 ID와 같은 필드를 추가 한 INNER JOIN을 쓰고 있어요 바인딩 수 없습니다 IR.MyId 및 ICB1.MyIdINNER JOIN 내부에 SELECT가있는 SQL Case 문. 여러 부분의 오류는 <p>그러나에</p> 내 <code>CASE</code> 내가 <code>WHERE</code></p> <p>오류 후 오류가 발생하고있는 <code>INNER JOIN</code> 내부에 말을 ...

"여러 부분으로 구성된 식별자 바인딩 수 없습니다" 이 쿼리에 대한 나의 의도는 INNER JOIN 안에 CASE을 추가하는 것입니다.

그래서 첫 번째 열은 A.CompanyId입니다. 두 번째 열은 ID가 다른 테이블에 있는지 확인하기 위해 CASE 문입니다. 그렇지 않다면 다른 SELECT 문을 수행하고, 단지 MyID이라고하십시오.

CASE WHEN 안에 SELECT COUNT(*)에 오류가 발생합니다.

도움을 주시면 감사하겠습니다. 감사.

INNER JOIN 
    (SELECT DISTINCT 
     A.CompanyId, 
     CASE 
      WHEN (SELECT count(*) 
        FROM Table1 IBC1 
        WHERE IR.MyId = ICB1.MyId) == 0 
       THEN 1 
       ELSE 0 
     END 
    FROM 
     cmp.CompanyNews A) E ON NP.CompanyId = E.CompanyId 
+1

'경우 (SELECT COUNT (*) 표 IBC1 WHERE IR FROM을 .MyId = ICB1.MyId) == 0''=='를'= '로 대체하십시오. – Hadi

+0

케이스에 대한 식별자와 식별자를 추가하십시오 :'THEN 1 else 0 END as NameOfIdentifier' –

+0

@John 전체 검색어를 제공하고 사용중인 RDBMS에 대한 태그 (sql-server, oracle, ...) – Hadi

답변

0

나는 전체 쿼리를 필요는 없지만 가능한 있다면 나는이에 대한 다음과 같은 방법이 걸릴 것 :

... 
    CASE 
     WHEN ICB1_ID.ID IS NULL 
     THEN 1 
     ELSE 0 
    END [ColumnName] 
FROM 
    ... 
    INNER JOIN 
     (
      SELECT DISTINCT A.CompanyId 
      FROM cmp.CompanyNews A 
     ) E 
    ON NP.CompanyId = E.CompanyId 
    OUTER APPLY 
     (
      SELECT TOP 1 ICB1.MyID ID 
      FROM Table1 IBC1 
      WHERE ICB1.MyId = IR.MyId 
     ) ICB1_ID