Sql 根据其他字段中的结果计算新字段

Sql 根据其他字段中的结果计算新字段,sql,sql-server,ssms,sql-server-2017,Sql,Sql Server,Ssms,Sql Server 2017,我正在努力回答一个问题。我希望根据另一列的结果(例如团队),将一列(十进制8,2)的结果增加10%或20%。因此,a组为10%,b组为20%,c组为10%,等等。增加百分比所基于的字段是一个整数字段 我曾尝试使用cast来实现这一点,但后来一切都失败了,现在我很烦。想法 下面是我的基本表格示例-我正在尝试进行更多练习,这样我就不会在工作中完全无用。现在,我们希望使用SQL: select Employee_No, First_Name, Last_Name, Annual_Salary, ca

我正在努力回答一个问题。我希望根据另一列的结果(例如团队),将一列(十进制8,2)的结果增加10%或20%。因此,a组为10%,b组为20%,c组为10%,等等。增加百分比所基于的字段是一个整数字段

我曾尝试使用cast来实现这一点,但后来一切都失败了,现在我很烦。想法

下面是我的基本表格示例-我正在尝试进行更多练习,这样我就不会在工作中完全无用。现在,我们希望使用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

您需要计算工资的分数并将其相加。在
案例中
定义正确的因子并将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;

想必,这就是您想要的逻辑:

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
    部分即可
  • 所有列引用都是限定的,因此它们指示它们来自哪个表
  • 我假设部门号是一个数字,所以我删除了常数周围的单引号。如果不是这样,则保留单引号
  • 这简化了计算的逻辑
  • 如果这是您真正想要完成的,那么可以很容易地将其转换为更新。(问题没有明确说明这一点。)

第一位的切割。应该是这样的:嗨,我是SQL新手,我正在为一个查询而挣扎。我希望根据另一列的结果(例如团队),将一列(十进制8,2)的结果增加10%或20%。因此,a组为10%,b组为20%,c组为10%,等等。增加百分比所基于的字段是一个整数字段。我曾尝试使用cast来实现这一点,但后来一切都失败了,现在我很烦。想法?帮助我们帮助您-请回答您的问题并添加表格结构、一些样本数据以及您希望获得的此样本结果非常感谢!我知道你现在必须做什么,我将尝试在其他地方复制。