甲骨文家庭作业无法"...THEN TO_CHAR"工作?



我正在为我的Oracle类处理以下问题。我有下面的解决方案,这是有效的,但我想格式化美元输出。当我添加"TO_CHAR"语句时,我得到一个错误,即"FROM"不是预期的位置。

作业分配问题:

使用Oracle数据库的employees表和CASE表达式来解码部门id。显示部门id、姓氏、工资和名为"New salary"的列,该列的值基于以下条件:如果部门id为10,则为1.25*工资如果部门id为90,则为1.5*工资如果部门id为130,则1.75*工资否则,显示旧工资。

没有"TO_CHAR"的工作说明:

SELECT LAST_NAME AS "LAST NAME", DEPARTMENT_ID AS "DEPARTMENT ID", SALARY,
CASE DEPARTMENT_ID
WHEN 10 THEN SALARY * 1.25
WHEN 90 THEN SALARY * 1.50
WHEN 130 THEN SALARY * 1.75
ELSE SALARY END AS "NEW SALARY"
FROM EMPLOYEES;

出错的声明:

SELECT LAST_NAME AS "LAST NAME, DEPARTMENT_ID AS "DEPARTMENT ID", SALARY,
CASE DEPARTMENT_ID
WHEN 10 THEN TO_CHAR (SALARY*1.25, '$99,999.99')
WHEN 90 THEN TO_CHAR (SALARY*1.50, '$99,999.99')
WHEN 130 THEN TO_CHAR (SALARY*1.75, '$99,999.99')
ELSE SALARY END AS "NEW SALARY"
FROM EMPLOYEES;

谢谢!

以下更正后的结果:

姓氏部门ID工资新工资国王90 24000$336000.00Kochhar 90 17000 25500.00美元De Haan 90 17000 25500.00美元

Craig对这个问题的解释是正确的,但与其只是添加另一个TO_CHAR,不如说将整个CASE表达式封装在一个TO_CHAR:中

SELECT LAST_NAME AS "LAST NAME", DEPARTMENT_ID AS "DEPARTMENT ID", SALARY,
TO_CHAR(
 CASE DEPARTMENT_ID
 WHEN 10 THEN SALARY * 1.25
 WHEN 90 THEN SALARY * 1.50
 WHEN 130 THEN SALARY * 1.75
 ELSE SALARY END,
 '$99,999.99'
 ) AS "NEW SALARY"
FROM EMPLOYEES;

你不应该在ELSE语句中对工资进行to_char吗?

问题是您的WHEN/THEN案例返回了一个字符串(因为您使用的是TO_CHAR),而ELSE返回的是一个数字。只需将TO_CHAR添加到ELSE即可。

最新更新