2014-09-25 230 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