2014-04-26 2 views
0

나는 고용 된 연도에 따라 직원의 급여를 결정할 수있는 간단한 함수를 작성하려고합니다. 그런 다음 이들의 급여를 그 테이블에서 "급여".Oracle 함수의 날짜에서 급여 결정

직원이 2011 년에 고용 된 경우 그의 연봉은 직원이 2012 년에 고용 된 경우 직원이 될 2013 그의 연봉에 고용 된 경우 그의 연봉은 6000

것 5000

것 7000

고용 된 날짜가 "Hired"란에 저장되어 있으므로 데이터를 추출하고 IF 문으로 급여를 정의하는 번호로 사용하는 방법을 알 수 없습니다. 나는 아마 TO_char 함수도 필요하다는 것을 알고 있지만, 날짜를 문자열로 변환하기 위해 그것을 어디에서 사용해야하는지 모른다.

이 작업을 수행하는 방법에 대한 도움을 주셔서 감사합니다.

+0

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm – Mat

+0

'선택 5000 + (TO_NUMBER (TO_DATE (datehired,'YYYY ')) - 2011) * 1000' – Ben

답변

0

case 문을 사용합니다. 여기에 한 가지 방법입니다 :

select (case when to_char(DateHired, 'YYYY') = '2011' then 5000 
      when to_char(DateHired, 'YYYY') = '2012' then 6000 
      when to_char(DateHired, 'YYYY') = '2013' then 7000 
     end) as Salary 
+0

고마워! 이것은 완벽하게 작동하는 것처럼 보입니다. 이제는 함수에 넣을 필요가 있습니다. 사례 진술이 무엇을 설명하고 왜 여기에 사용하는지 설명해 주시겠습니까? – LightningBolt

+0

http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/case_statement.htm. 그것은 문제를 해결하는 올바른 방법이므로 여기에서 사용됩니다. 'case' 문은 오라클의'decode()'함수를 대신합니다. 'case' 문은 ANSI 표준 SQL입니다. –

+0

왜 CASE 문을 사용합니까? 매년 (또는 20 년에 한 번씩 모든 사람이 잊어 버릴 때까지) 변화해야합니다. 그것은 날짜를 기반으로 산수 시리즈 것 같습니다. 이것이 사실이라면 날짜를 제거하십시오. – Ben