根据另一个字段中的结果计算一个新字段

时间:2018-09-30 17:54:37

标签: sql sql-server ssms sql-server-2017

我正在努力查询。我想根据另一列的结果将一列的结果(十进制8,2)增加10%或20%,例如球队。因此,a团队为10%,b团队为20%,c团队为10%,依此类推。%增长所基于的字段是int字段。

我试图通过使用强制转换来做到这一点,但随后一切都失败了,并且现在困扰着我。有想法吗?

这是我的基本表的示例-我正在尝试更多练习,因此我现在在工作中并不是完全没用的,应该使用SQL:

select 
Employee_No,
First_Name,
Last_Name,
Annual_Salary,
case d.Department_No
when '20' then Annual_Salary+5%
when '10' then Annual_Salary+5%
when '50' then Annual_Salary+10%
when '80' then Annual_Salary+10%
when '90' then Annual_Salary+10%
when '110' then Annual_salary10+%
else Annual_Salary          
end
,
Department_Name,
Department_No

from dbo.employees

2 个答案:

答案 0 :(得分:0)

您需要计算薪水的一部分并将其相加。在CASE中定义正确的因子,然后将salaray乘以它们。

SELECT employee_no,
       first_name,
       last_name,
       annual_salary,
       annual_salary
       + CASE
           WHEN department_no IN ('10', '20') THEN
             .05
           WHEN department_no IN ('50', '80', '90', '110') THEN
             .1
           ELSE
             0
         END
       * annual_salary,
       department_name,
       department_no
       FROM dbo.employees;

答案 1 :(得分:0)

大概这是您想要的逻辑:

sudo python3 -m pip install <packagename>

注意:

  • 这假设您实际上有两个表,一个表用于员工,一个表用于部门。如果不是这样,只需删除select e.Employee_No, e.First_Name, e.Last_Name,e.Annual_Salary, (Annual_Salary * (case when e.Department_No in (10, 20) then 1.05 when e.Department_No in (80, 90, 110) then 1.10 else 1 end) ) as incremented_salary d.Department_Name, d.Department_No from dbo.employees e join dbo.departments d on d.department_no = e.department_no; 部分。
  • 所有列引用都是限定的,因此它们指示了它们来自哪个表。
  • 我假设join是一个数字,所以我删除了常数周围的单引号。如果不正确,请保留单引号。
  • 这简化了计算逻辑。
  • 如果您确实要完成此操作,则可以轻松地将其转换为department_no。 (该问题并未明确说明。)