【发布时间】:2014-11-19 21:18:43
【问题描述】:
我已经创建了几个 CASE 语句,其中没有一个工作,有所有不同的错误。我目前花了过去几个小时试图弄清楚它们,但根本无法得到它们。如果有人能解释我在每个方面做错了什么,那就太好了。
SELECT FIRST_NAME, LAST_NAME, to_number(MANAGER_ID, '9999'), COMMISSION_PCT,
CASE
WHEN '"MANAGER_ID" > 0' THEN MANAGER_ID
ELSE '9999'
END AS"Review"
FROM EMPLOYEES
WHERE DEPARTMENT_ID BETWEEN 80 AND 90
使用此代码,我应该创建一个新列“评论”并输入以下信息: 如果他们有经理 ID,则会显示 如果他们没有经理 ID,则会显示 Commission_pct 如果他们没有佣金,则会显示“9999”
[在写这篇文章时,我注意到我从来没有任何关于 Commission_Pct 的命令,但我假设这甚至不会解决这个问题。]
我的下一个问题是
Select NAME, START_DATE, to_char(END_DATE, 'DD/MON/YYYY'),
CASE END_DATE
WHEN '30/Sep/2004' THEN 'End in 2 weeks'
ELSE SYSDATE
END AS "PROMOTIONS"
FROM f_promotional_menus
使用此代码,有点奇怪,但这是它的要求。 如果有结束日期,暂时用“两周后结束”代替。如果没有结束日期,请将其替换为今天的日期。
我的最后一期
SELECT LAST_NAME, to_number(DEPARTMENT_ID, '99999), to_number(SALARY, '9999999.99'),
CASE DEPARTMENT_ID
WHEN '10' THEN '1.25*"SALARY"'
WHEN '90' THEN '1.5*"SALARY"'
WHEN '130' THEN '1.75*"SALARY"'
ELSE SALARY
END AS "NEW_SALARY"
FROM EMPLOYEES;
再次,一个新列的要求是- 如果部门 id 是 10 那么 1.25 * 工资 如果部门 id 是 90 则 1.5 * 工资 如果部门 id 是 130 那么 1.75 * 工资 否则,显示旧工资。
如果有人对我哪里出错有最模糊的想法,并且有关于修复它的建议,那将不胜感激。 谢谢!
【问题讨论】:
-
Stack Overflow 的工作方式是:一次问一个问题。拜托,你能把你的三个问题分成三个不同的 Stack Overflow 问题