Домашняя работа Oracle не может заставить работать "... THEN TO_CHAR"? - PullRequest
1 голос
/ 08 марта 2012

Я работаю над следующим вопросом для своего класса Oracle.У меня есть решение ниже, это работает, но я хотел бы отформатировать вывод в долларах.Когда я добавляю оператор «TO_CHAR», я получаю сообщение об ошибке «FROM» не там, где ожидается.

Вопрос о домашнем задании:

Использование таблицы сотрудников базы данных Oracleи CASE выражение для декодирования идентификатора отдела.Отобразите идентификатор отдела, фамилию, зарплату и столбец с именем «Новая зарплата», значение которого основано на следующих условиях: Если идентификатор отдела равен 10, тогда 1,25 * зарплата Если идентификатор отдела равен 90, тогда 1,5 * зарплата Если идентификатор отделаравно 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;

СПАСИБО!

Результат после исправления ниже:

ИД ОТДЕЛА ПОСЛЕДНЕГО ИМЯ SALARY NEW SALARY King 90 24000 $ 36 000,00 Kochhar 9017000 $ 25 500,00 Де Хаан 90 17 000 $ 25 500,00

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Крейг объяснил проблему правильно, но вместо того, чтобы просто добавить еще один 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;
3 голосов
/ 08 марта 2012

Разве вы не должны делать to_char на зарплату в инструкции ELSE?

2 голосов
/ 08 марта 2012

Проблема в том, что ваши случаи WHEN / THEN возвращают строку (поскольку вы используете TO_CHAR), но ваш ELSE возвращает число. Просто добавьте TO_CHAR в ELSE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...