我正在学习 SQL 并使用 Oracle 11。我正在使用犯罪数据库并试图找到未付费用的犯罪分子。我的查询如下
select first, last, charge_id, (fine_amount + court_fee) as "Total Amount Owed", NVL(amount_paid, null), (fine_amount + court_fee - amount_paid) as "Amount Owed", pay_due_date
from crime_charges cc, criminals c, crimes
where crimes.crime_id = cc.crime_id and c.criminal_id = crimes.criminal_id and (NVL(fine_amount, 0) + NVL(court_fee, 0)) – NVL(amount_paid, 0 ) > 0;
数据库中的 amount_paid 和 fine_amount 和 court_fee 有空值。我试图过滤掉那些不欠任何atm的罪犯,即(fine_amount + court_fee)-amount_paid> 0
我不断收到一条错误消息,说 ORA-00920:无效的关系运算符 00920。00000 -“无效的关系运算符” *原因:
*操作:行错误:43 列:122
我根本无法让 NVL 在 where 子句中工作。我已经看到使用 NVL 的 where 子句的示例,但我看不出它们与我的查询有何不同。
例子:
SELECT fname, lname, manager_emp_id
FROM employee
WHERE NVL(manager_emp_id, -999) != 7698;