SQL Server JOIN에서 CASE 문 활용
SQL Server JOIN 조건 내에서 CASE 문을 사용하는 것은 까다로울 수 있습니다. JOIN 절에 CASE 문을 직접 사용하면 "'=' 근처의 구문이 잘못되었습니다."와 같은 구문 오류가 발생하는 경우가 많습니다.
구문 오류 이해
이 오류는 CASE 문이 부울 true/false 결과가 아닌 스칼라 값을 생성하기 때문에 발생합니다. 그러나 JOIN 조건에서는 행 조인 여부를 결정하기 위해 부울 식이 필요합니다. 비교가 없는 단순한 CASE 문은 이러한 요구를 충족시키지 않습니다.
올바른 접근 방식
해결책에는 부울 값(또는 부울과 쉽게 비교할 수 있는 값)을 출력하도록 CASE 문을 설계하는 것이 포함됩니다. 그런 다음 이 출력을 비교하여 조인을 제어하는 데 사용합니다.
개선된 JOIN 조건의 예는 다음과 같습니다.
<code class="language-sql">ON CASE WHEN a.type IN (1, 3) THEN CASE WHEN a.container_id = p.hobt_id THEN 1 ELSE 0 END WHEN a.type IN (2) THEN CASE WHEN a.container_id = p.partition_id THEN 1 ELSE 0 END ELSE 0 END = 1</code>
이 수정된 문은 중첩된 CASE 문을 사용합니다. 내부 CASE 문은 조인 조건(예: a.container_id = p.hobt_id
)이 충족되면 1을 반환하고 그렇지 않으면 0을 반환합니다. 그런 다음 외부 CASE 문은 이러한 결과를 결합합니다. 최종 비교(= 1
)는 중첩된 CASE 문 내의 조건이 true인 경우에만 행이 조인되도록 합니다.
이 방법을 사용하면 JOIN 조건 내에서 CASE 문을 효과적으로 사용하여 특정 기준에 따라 행을 조건부 조인할 수 있습니다.
위 내용은 SQL Server JOIN 조건에서 CASE 문을 효과적으로 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!