조건에 기반한 계산된 컬럼
컬럼을 계산할 때 특정 조건의 충족 여부에 따라 표현식의 결과가 달라져야 하는 경우가 있습니다. 조건은 논리 함수 If()
또는 Case()
를 사용하여 표현식에서 설정합니다.
If()
If()
함수를 사용할 때는 true 또는 false인 조건을 지정하고, 조건이 true일 때 반환할 항목과 false일 때 반환할 항목을 차례로 지정합니다.
예
다음 표현식의 의미는 아래와 같습니다.
If(([Amount]<10),"low","high")
컬럼 'Amount'의 행 값이 10보다 작은 경우 값 'low'가 결과로 반환되지만, 값이 10 이상인 경우에는 값 'high'가 반환됩니다.
즉, 아래와 같습니다.

다른 말로 하면 If()
함수는 행을 두 그룹으로 나눕니다. 하나의 그룹은 지정된 조건이 true인('low'를 결과로 반환) 행으로 구성되며, 다른 그룹은 지정된 조건이 false인('high'를 결과로 반환) 행으로 구성됩니다.
반환될 값이 집계된 값인 경우 두 그룹은 따로 처리됩니다. 아래 테이블에서 다음 표현식이 추가된 예제를 볼 수 있습니다.
If(([Amount]<10),Avg([Amount]),Avg([Amount]))
이 표현식에는 평균 집계가 포함되어 있습니다. 이 경우 두 그룹 모두에 동일한 집계가 지정되었지만 서로 다른 집계를 사용할 수도 있습니다.

행 값이 10 미만인 경우, 즉 'true' 그룹의 경우에는 평균 6이 반환되며((5+7)/2), 'false' 그룹의 경우에는 평균 13((14+10+15)/3)이 반환됩니다.
if()
함수를 and
또는 or
와 결합하여 사용할 수도 있습니다. 예를 들어
If(([Customer age]<20) and ([Gender]="Female"),"girl","other")
표현식은 아래의 추가된 계산된 컬럼으로 나타납니다.

Case()
조건 결과가 true 및 false로 제한되지 않는 표현식을 작성하려면 case()
함수를 사용할 수 있습니다. Case()
는 두 가지 형식으로 사용할 수 있으며 아래에서 예제를 사용하여 모두 설명합니다.
예제 1
아래의 책과 비디오 가격이 각각 10%와 50% 할인되어 가격 목록을 업데이트해야 한다고 가정하겠습니다.

제품 유형에 따라 할인율이 다르기 때문에 case()
표현식을 사용하여 새 가격을 계산합니다.
case [Type]
when "Book" then [Price]*0.9
when "Video" then [Price]*0.5
else [Price]
end

여기서 case()
는 'Type'을 표현식의 when
옵션 각각과 비교합니다.
예제 2
두 번째 예제에서는 case()
를 사용하여 학생들의 시험 결과를 평가합니다. 평가 수준에는 Failed(총계가 100 미만), Passed 및 Excellent(총계가 160 이상)의 세 가지 수준이 있습니다.

이 예제의 Case()
는 각 when
옵션마다 독립적으로 조건을 평가합니다.
case
when ([Test A] + [Test B])<100 then "Failed"
when ([Test A] + [Test B])>=160 then "Excellent"
else "Passed"
end
이 방법을 사용하면 예제 1에서보다 복잡한 조건을 구현할 수 있습니다.
결과 계산된 컬럼은 아래와 같습니다.

case()
양식 모두에서 여러 개의 when
/then
조건을 표현식에 포함할 수 있습니다.조건 실행 순서
case()
표현식의 여러 부분은 위에서 아래 순서로 실행됩니다. 아래의 표현식과 결과 컬럼을 참조하십시오.
case
when [Number]<40 then "yes"
when [Number]<70 then "no"
else "x"
end

40 미만인 숫자는 'yes'로 설정되며 변경되지 않습니다. 70 미만의 숫자를 'no'로 설정하는 표현식의 다음 부분은 나머지 행에만 영향을 줍니다.