CASE 와 COALESCE 사용하기

연봉을 계산하는데 있어서..
어떤 사람은 시급으로 받고, 어떤 사람은 연봉으로 받고, 어떤 사람은 판매량에 따른 커미션을 받는다고 했을때..
각 사람들의 연봉을 구하는 경우..
CASE 문을 쓰면 프로그램에서 따로 코딩하지 않아도 된다.
또한 필요없는 데이터들이 null값으로 들어가 있다면 COALESCE문을 사용하면
더 간단해지고 성능도 좋아진다.
COALESCE함수는 여러개의 표현식 중에서 첫번째로 나타나는 널이 아닌 값을 리턴해준다.
CONVERT 와 CAST는 자료형을 바꿀때 쓰는 함수로 CAST는 ANSI 호환을 위해 사용된다.

다음 예제로 그 쓰임새를 살펴보자

select emp_id, [연봉] =
case
when hourly_wage IS NOT NULL
then convert(money,(hourly_wage * 40 * 52))
when sallary is not null
then convert(money, sallary)
else
convert(money,(commission * num_sales))
end
from wages

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

select emp_id
, [연봉] = cast (
coalesce(hourly_wage*40*52,sallary,commission*num_sales) as money)
from wages

Comments

Powered by Facebook Comments

댓글 남기기

당신의 이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

*

다음의 HTML 태그와 속성을 사용할 수 있습니다: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>