2014-09-25 34 views
0

我需要从service_total(此字段来自单独的表)中获取值,然后我需要从插入的最新记录开始减去1(这在service_accrued中突出显示领域)。我需要弄清楚如何在我的查询中计算这个service_accrued字段。我不知道如何将此service_total作为起点,并逐行减少。这在Excel中显然很容易,我在sql中遇到了麻烦。从字段中获取最大值并逐行减去

enter image description here

+0

所以基本上,你会想服务总数与service_accrued相比完全相反吗?那么服务总量将会达到314,313,312等? – ItalianStallion 2014-09-25 23:06:21

+0

服务总量将保持不变,因为它来自不同的表格。该服务累计将达到314,313,312等。 – 2014-09-26 18:05:47

回答

0

如果你只是有表而不service_per_periodservice_accrued你可以使用row_number()重新生成。这只适用于如果service_per_period是一个常数值。

select 
    p_id, 
    employee_id, 
    name, 
    pay_period_id, 
    1 as service_per_period, 
    service_total + 1 - row_number() over (
     partition by employee_id 
     order by p_id desc 
    ) service_accrued, 
    service_total 
from 
    mytable 
+0

此解决方案似乎可行!我真的需要了解'row_number()over(partion by)是如何工作的,我可能需要进行修改,因为我需要在payroll_unit字段中添加,然后按字段payroll_unit进行分组。编号service_accrued字段。 – 2014-09-26 18:09:19