逻辑
逻辑是如果订单被取消然后返回0,否则返回欠款值 - 付款值
小查询
CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
获取错误
ORA-00932:不一致的数据类型:预期CHAR得到NUMBER 00932. 00000 - “不一致的数据类型:预期%s获得%s” *原因:
*行动: 行错误:25列:58
答案 0 :(得分:4)
试试这个,你的情况应该返回数字或varchar,现在你的情况返回' 0'作为varchar,否则作为数字。两者都应该返回一个varchar,或者两者都应该返回一个数字。
当两者都返回varchar
时CASE WHEN d.cancelled = 'TRUE'
THEN '0'
ELSE to_char((to_char(b.owed)) - (to_char(d.paid)))
END AS balance,
OR
当两者都返回
时CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (to_char(b.owed)) - (to_char(d.paid))
END AS balance,
OR
当两者都返回
时CASE WHEN d.cancelled = 'TRUE'
THEN 0
ELSE (b.owed - d.paid)
END AS balance,
答案 1 :(得分:1)
此(to_char(b.owed)) - (to_char(d.paid))
将是一个数字,0
是一个字符串。您应该删除then
子句中的刻度线或者删除else子句中的to_char:to_char((to_char(b.owed)) - (to_char(d.paid)))
或简单地(b.owed - d.paid)