我想在AVG中嵌入一个NVL表达式。我试图从date_returned中减去start_date以确定贷款的长度(以月为单位)。如果date_returned为null,我想使用今天的日期(sysdate)。以下是我的陈述中的一个片段:
avg(nvl(date_returned,sysdate)-start_date/30) "Loan Length in Months"
这是抛出ORA-00932错误,数据类型不一致,预计NUMBER得到DATE。
有关如何更正此声明的任何建议?
答案 0 :(得分:0)
错误可能来自分部:
SQL> select sysdate/30 from dual;
select sysdate/30 from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got DATE
Oracle允许添加/减去日期,因为它假设数字表示天数:
SQL> select sysdate-1, sysdate+1 from dual;
SYSDATE-1 SYSDATE+1
--------- ---------
26-NOV-14 28-NOV-14
......但我无法弄清楚乘法/除法的可能意义。
正如乔纳森所指出的,你可能忘记了一个括号; - )
答案 1 :(得分:0)
您的查询应该是这样的,
avg(nvl(date_returned,sysdate)-start_date)/30 "Loan Length in Months"
你的date_returned也应该是一个日期字段,如果它是NUMBER那么你会得到ORA-00932错误,数据类型不一致,预计NUMBER得到DATE