Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 同一分支机构同一季度数计算_Sql - Fatal编程技术网

Sql 同一分支机构同一季度数计算

Sql 同一分支机构同一季度数计算,sql,Sql,我需要补充的是,当员工职务X切换到同一分支机构内的不同职务(Y或Z)时,修改他们在该新职务(Y或Z)所在季度的总FTE 因此,逻辑是: 对于位置X到Y 对于位置X到Z 正如您所看到的,我缺少正确执行此操作的一些SQL操作符的知识。如果您能提供任何帮助,我们将不胜感激! 请,谢谢 一个粗略的草图,不同的DBMS供应商之间的日期算法有很大差异,所以我使用了您的表达式。我使用了变量:new_emplyee_title作为新标题 update Employees set [Total FTE c

我需要补充的是,当员工职务X切换到同一分支机构内的不同职务(Y或Z)时,修改他们在该新职务(Y或Z)所在季度的总FTE

因此,逻辑是:

对于位置X到Y 对于位置X到Z 正如您所看到的,我缺少正确执行此操作的一些SQL操作符的知识。如果您能提供任何帮助,我们将不胜感激!
请,谢谢

一个粗略的草图,不同的DBMS供应商之间的日期算法有很大差异,所以我使用了您的表达式。我使用了变量:new_emplyee_title作为新标题

update Employees
    set [Total FTE calculated] = case when :new_emplyee_title = Y 
                                      then [ expression for Y ]
                                      else [ expression for Z ] 
                                 end
where [Position Start Date] between [Q2 start date] AND [Q2 end date]
  and [Employee Title] = X
  and :new_emplyee_title in (Y,Z);

如果您的DBMS支持触发器,这将非常适合更新触发器。

非常感谢!我理解你的逻辑。我将对此进行修改,使其适用于我的用例。干杯
AND IF [Position Start Date] is between [Q2 start date] AND [Q2 end date]
AND [Employee Title] of [Employee ID] was X and is now Z
THEN [Total FTE calculated] = ([Position Start Date] - [Quarter Start Date])/[Days in Quarter]) * [Total FTE])

ELSE [Total FTE Calculated] = [Total FTE] * 1
END
update Employees
    set [Total FTE calculated] = case when :new_emplyee_title = Y 
                                      then [ expression for Y ]
                                      else [ expression for Z ] 
                                 end
where [Position Start Date] between [Q2 start date] AND [Q2 end date]
  and [Employee Title] = X
  and :new_emplyee_title in (Y,Z);