首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对同一列执行不同的计算

对同一列执行不同的计算
EN

Stack Overflow用户
提问于 2017-06-20 03:02:46
回答 1查看 26关注 0票数 0

我有一个工资列,我想给所有经理加薪20%,给所有副总裁加薪30%。我不确定如何将表连接到自己,然后进行不同的计算,因为select语句将保持不变,但加薪20%

代码语言:javascript
复制
SELECT 'Emp# ' || EMPLOYEE_ID  || ' named ' || FIRST_NAME || ' ' ||LAST_NAME || ' who is ' || JOB_ID || ' will have a new salary of $' || (SALARY +(SALARY*0.2)) AS "Employee with increased pay"
FROM EMPLOYEES
WHERE JOB_ID LIKE '___MAN%' OR (JOB_ID LIKE '___VP%') AND (SALARY < 6000 OR 
SALARY > 11000)
ORDER BY (SALARY - (SALARY*0.2)) DESC
EN

回答 1

Stack Overflow用户

发布于 2017-06-20 03:16:06

您可以使用CASE子句。

SQL允许您在CASE语句中使用IF ... THEN ... ELSE逻辑,而不必调用过程。(参见Documentation)

您的查询应该如下所示:

代码语言:javascript
复制
SELECT 'Emp# '
  || EMPLOYEE_ID
  || ' named '
  || FIRST_NAME
  || ' '
  ||LAST_NAME
  || ' who is '
  || JOB_ID
  || ' will have a new salary of $'
  ||
  CASE JOB_ID
    WHEN 'Manager'
    THEN (SALARY +(SALARY*0.2))
    WHEN 'VP'
    THEN (SALARY +(SALARY*0.3))
  END AS "Employee with increased pay"
FROM EMPLOYEES
WHERE JOB_ID LIKE '___MAN%'
OR (JOB_ID LIKE '___VP%')
AND (SALARY < 6000
OR SALARY   > 11000)
ORDER BY (SALARY - (SALARY*0.2)) DESC

CASE中,我使用了列JOB_ID的值,假设'Manager‘和'VP’是您的表的实际值。

希望它能为你工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44638054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档