Вычисление нового поля в зависимости от результатов в другом поле - PullRequest
0 голосов
/ 30 сентября 2018

Я борюсь с запросом.Я хочу увеличить результат столбца (десятичное 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 голосов
/ 30 сентября 2018

Предположительно, вам нужна эта логика:

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 - это число, поэтому я удалил одинарные кавычки вокруг констант.Если это не так, то оставьте одинарные кавычки.
  • Это упрощает логику для расчета.
  • Это можно легко превратить в update, если вы действительно этого хотите.выполнить.(Вопрос не указывает это явно.)
0 голосов
/ 30 сентября 2018

Вам необходимо рассчитать долю зарплаты и сложить ее.В CASE определите правильные факторы и умножьте салара на них.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...