2014-11-27 3 views
2

AVG 내에 NVL 식을 포함하고 싶습니다. 나는 month_returned에서 start_date를 빼서 개월 단위로 대출 기간을 결정하려고합니다. date_returned가 null 인 경우 오늘 날짜 (sysdate)를 사용하고 싶습니다. 여기 내 문에서 단편이다Oracle 11G - NVL 및 AVG

avg(nvl(date_returned,sysdate)-start_date/30) "Loan Length in Months" 

이것은 ORA-00932 오류, 일치하지 않는 데이터 유형을 던지고, 예상 번호는 DATE를 얻었다.

이 문장을 어떻게 수정할 수 있습니까?

는 오류가 아마 부문에서 온다
+2

괄호 세트를 생략했다고 생각합니다. 시작일을 30으로 나눈 값은 의미가 없지만 시간 차이 (일 수, 아마도)를 30으로 나눈 값이 의미가 있습니다. 따라서 :'AVG ((NVL (date_returned, sysdate) -start_date)/30)'. –

+0

나는 당신이 당신의 날짜를 숫자로 변환해야하고 평균적인 기능을 적용 할 수 있다고 생각한다. http://stackoverflow.com/questions/10307353/averaging-dates-in-oracle-sql을 참조하십시오. –

답변

0

:

SQL> select sysdate/30 from dual; 
select sysdate/30 from dual 
     * 
ERROR at line 1: 
ORA-00932: inconsistent datatypes: expected NUMBER got DATE 

오라클은이 수를 가정하기 때문에 날짜에 /에서/더하기, 빼기 할 수는 일을 의미

SQL> select sysdate-1, sysdate+1 from dual; 

SYSDATE-1 SYSDATE+1 
--------- --------- 
26-NOV-14 28-NOV-14 

을 ...하지만 난 나오지 않았어 곱셈/나눗셈에 대한 가능한 의미를 파악하지 못합니다. 조나단이 지적 하듯이

, 당신은 아마 그것의 번호는 다음의 경우 또한 date_returned이, 날짜 필드해야 괄호 ;-)

0
귀하의 질의는 다음과 같이해야한다

,

avg(nvl(date_returned,sysdate)-start_date)/30 "Loan Length in Months" 

를 잊어 버렸습니다 ORA-00932 오류, 일치하지 않는 데이터 유형, 예상 NUMBER 날짜 있음