sql case 문 예제

보시다시피 CASE 식을 사용하면 SQL 문에 다양성이 추가됩니다. 한 값 집합에서 다른 값으로 데이터를 변환할 수 있을 뿐만 아니라 문이 오류를 반환하지 않도록 하는 데도 사용할 수 있습니다. 위의 쿼리는 GROUP BY 절에서 CASE 문을 반복하면 쿼리가 어지럼증으로 길어지므로 GROUP BY 절의 열 대신 숫자를 사용하는 데 적합합니다. 또는 다음과 같은 그룹 BY 절에서 열의 별칭을 사용할 수 있습니다 . 위의 예에서 Boolean_Expression_1은 A = B, A != B와 같은 `같음`과 `같지 않음` 연산자모두를 포함할 수 있습니다. 두 번째는 변수 같음 대신 search_condition를 고려하고 그에 따라 statement_list를 실행합니다. CASE 식은 해당 조건을 순차적으로 평가하고 조건이 만족스러운 첫 번째 조건으로 중지합니다. 경우에 따라 식이 CASE 식이 식의 결과를 입력으로 받기 전에 식이 평가됩니다. 이러한 식을 평가하는 데 오류가 발생할 수 있습니다. CASE 식에 대한 WHEN 인수에 나타나는 집계 식이 먼저 평가된 다음 CASE 식에 제공됩니다. 예를 들어 다음 쿼리는 MAX 집계 값을 생성할 때 0오류로 나누기 시작합니다. CASE 식을 평가하기 전에 발생합니다.

검색된 SQL CASE 문은 보다 포괄적인 식 평가 형식을 사용합니다. 급여 범위 나 연령과 같은 데이터 범위로 작업하려는 경우 좋습니다. 그런 다음 SELECT 목록에 CASE 문을 추가하여 가격 범위를 표시할 수 있습니다. SELECT 문 내에서 간단한 CASE 식은 같음 검사만 허용합니다. 다른 비교는 이루어지지 않습니다. 다음 예제에서는 CASE 식을 사용하여 제품 라인 범주의 표시를 변경하여 더 이해하기 쉽게 만듭니다. 다음 예제에서는 ORDER BY 절에서 CASE 식을 사용 하 여 주어진된 열 값을 기반으로 행의 정렬 순서를 확인 합니다. 첫 번째 예에서, Salaried의 값인 인적 자원.Employee 테이블의 플래그 열이 평가됩니다. Salaried플래그가 1로 설정된 직원은 BusinessEntityID에서 내림차순으로 순서대로 반환됩니다. SalariedFlag가 0으로 설정된 직원은 비즈니스 엔티티ID가 오름차순으로 순서대로 반환합니다. 두 번째 예에서 결과 집합은 전역 이름 열에 의해 정렬 됩니다 때 열 CountryRegionName `미국` 및 다른 모든 행에 대 한 CountryRegionName. 안녕하세요, IN을 비교 연산자로 생각하십시오.

WHERE 절에 사용됩니다. 이 점을 감안할 때 IN 절을 사용하는 CASE WHEN 내에 SELECT 문을 작성할 수 있습니다. 다음 예제에서는 HAVING 절에서 CASE 식을 사용 하 여 SELECT 문에 의해 반환 되는 행을 제한 합니다. 문은 HumanResources.Employee 테이블의 각 직책에 대한 최대 시간당 요금을 반환합니다. HAVING 조항은 최대 급여율이 40 달러 이상인 남성 또는 최대 급여율이 42 달러보다 높은 여성으로 타이틀을 제한합니다. 여기서 각 WHEN 문에는 조건부 부울 식이 있습니다. 각 부울 식 즉, Tutorial_name = `SQL`,… TRUE로 평가되는 첫 번째 부울 식까지 TRUE/FALSE에 대해 평가됩니다. 다음 예제에서는 테이블 값 함수 dbo에서 SET 문의 CASE 식을 사용 합니다. GetContactInfo. AdventureWorks2012 데이터베이스에서 사람과 관련된 모든 데이터는 Person.Person 테이블에 저장됩니다.

예를 들어, 직원은 직원, 공급업체 담당자 또는 고객일 수 있습니다. 함수는 지정된 BusinessEntityID의 이름과 해당 사용자의 연락처 유형을 반환합니다. SET 문의 CASE 식은 직원, 공급업체 또는 고객 테이블에 BusinessEntityID 열이 있는 것을 기반으로 연락처 형식 열에 대해 표시할 값을 결정합니다.