SQL Server-从同一视图表中的其他字段创建值一个字段

普拉博沃是机库

需要您的帮助,我不知道确切的名字。我想将记录从另一个字段创建到同一视图的一个字段中。但是当我创建它时,值显示却来自同一条记录。

我有4个字段的1个表,分别是YEAR,PEOPLE,REMAINING,CF

像这样的逻辑:

  1. IF people A in 2014 have remaining value 25 and CF values 0 THEN people A in 2015 will have CF values 6

  2. IF Remaining > 6 THEN CF Values only 6, IF Remaining between 0 to 6 THEN CF Values = Remaining, IF Remaining < 0 THEN CF Values 0

  3. IF values in Current Year will always take from Remaining in Last Year so if People A didn't have remaining in last year, the CF in current year become 0

这是我的代码:

SELECT  
    A.FiscalYear,
    C.EmployeeName, 
    CASE 
        WHEN A.FiscalYear < 2015 THEN A.Remaining 
        WHEN B_1.daystaken < 0 THEN A.Remaining + ISNULL(B_1.DaysTaken, 0) 
        ELSE A.Entitlement 
    END AS Remaining,
    CASE 
        WHEN A.remaining > 6 THEN 6
        WHEN A.remaining BETWEEN 0 AND 6 THEN A.remaining
        WHEN A.remaining < 0 THEN 0
        ELSE ISNULL(A.remaining,0)
    END AS CF
FROM  dbo.DataLeaveBalance AS A 
LEFT OUTER JOIN dbo.VWLeave_takens AS B_1 
    ON A.FiscalYear = B_1.AffectFY 
    AND A.EmpCode = B_1.EmpCode 
LEFT OUTER JOIN dbo.MasterEmployee AS C
    ON A.EmpCode = C.EmpCode
这是我的代码的结果:

年人保持cf 
----------- ------- ----------- ---------- - 
2014杰克逊14 6 
2014伊娃5 
2014 Akson 0 0 
2015年10杰克逊6 
2015年10伊娃6 
2015年13 Akson 6

我想是这样的结果:

今年人们仍然比照
----------- --- ---- ----------- ----------- 
2014杰克逊14 0 
2014伊娃5 0 
2014阿克森0 0 
2015杰克逊10 6 
2015伊娃10 5 
2015阿克森13 0
2016杰克逊10 6 
2016 eva 10 6 
2016阿克森13 6
汤斯

您在每一行中仅具有当前年份的值。并且您的计算需要访问上一年的值。

您可以通过FiscalYear-1这样的联接获取上一年的值

现在,您可以在行级别同时获得当前(B_1)和前一年(B_2),并且可以在计算中使用它。

SELECT  
    *
FROM  dbo.DataLeaveBalance AS A 
LEFT OUTER JOIN dbo.VWLeave_takens AS B_1 
    ON A.FiscalYear = B_1.AffectFY 
    AND A.EmpCode = B_1.EmpCode 
LEFT OUTER JOIN dbo.VWLeave_takens AS B_2
    ON (A.FiscalYear-1) = B_1.AffectFY 
    AND A.EmpCode = B_1.EmpCode 
LEFT OUTER JOIN dbo.MasterEmployee AS C
    ON A.EmpCode = C.EmpCode

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Sql server Pivot并从一个字段创建多个记录并拆分另一个字段

Microsoft SQL Server:触发以检查由另一个字段分组的一个字段的总和是否不超过特定值?

如何将多行连接到SQL Server中的一个字段

SQL Server:查询以在一个字段中获得多个结果

如何将数据从一个字段复制到SQL Server中不同行中的另一个字段

如何在 SQL Server 中添加上一个字段和下一个?

仅针对其他一些字段创建带有渐进字段的 SQL Server 视图

如何确定一个字段在SQL Server 2008 R2中是否具有前导零?

如何获取SQL Server 2014中至少一个字段有数字的记录?

如何将一个字段中的日期与另一个字段中的时间结合在一起-MS SQL Server

SQL Server:插入一个复杂的选择查询,其中一个字段是不同的

如何在SQL Server 2014中将结果从一个字段拆分为两个单独的字段

SQL Server:当有多行时,仅基于一个字段选择一行

创建一个视图,其中包含员工以前的工作经验年份字段作为SQL Server中的列名

给定另一个字段的值,SQL 创建一个新的字段会话

SQL Server添加价格,数量与“分组依据”相同的ID,但在“分组依据”中具有另一个字段

每小时分组需要与以前的小时数据相加,并与SQL Server中的另一个字段相减

将一个值与组SQL Server中的其他值进行比较

SQL Server - 如果该字段已被透视,如何通过另一个字段再次透视?那数据库设计正确吗?

SQL Server 删除最后一个字

SQL:查询以在一个字段中查找具有共同值的多个项目

最大与 SQL Server 中的其他字段

在子查询中选择一个字段作为外部查询的一部分.SQL Server 2008

如何在SQL查询的一个字段中求和多个字段?

使用同一行中另一个字段提供的属性值进行SQL XML解析

SQL添加一个int字段,并在同一列中基于该数字递增其他字段

SQL:基于另一个字段的值的条件字段输出

使用SQL根据记录中的另一个字段检索组合记录的字段值

替换SQL Server 2008中的最后一个字符