2016-12-21 24 views
1

我正試圖計算下表中的合同修正值。在DB2中查找和求和合約SQL

Contract_table

時,有一個修訂的合同值與從合同的最後一個版本+在修改增加值餘數更新。 爲了說明我添加了如何在最後一列計算的信息。

我該如何解決DB2中的SQL問題,我在這裏打了一堵牆。 謝謝

+1

未知的細胞,你應該把那些在計算中的實際值。 –

+0

也發佈了有問題的DB2版本和平臺。 – mustaccio

+0

抱歉,這是DB2 9.7,我們使用datastage來運行作業 – user7326074

回答

0

考慮使用自己加入每個計算運行號合同ROW_NUMBER()。具體而言,將LEFT JOIN過濾爲第一個FROM表後面的一個行號。從那裏列將用於AmendmentValue計算對齊:除了單元格引用的

SELECT sub1.Contract, sub1.Amendment, sub1.Value, sub1.Billed, sub1.Reminder, 
     (CASE WHEN sub1.Amendment IS NULL THEN NULL 
     ELSE sub1.Billed - sub2.Remainder END) As AmendmentValue 
FROM 
    (SELECT t.Contract, t.Amendment, t.Value, t.Billed, t.Remainder, 
      ROW_NUMBER() OVER (PARTITION BY t.Contract 
      ORDER BY CASE WHEN t.Amendment IS NULL THEN 1 ELSE t.Amendment END) rn 
     FROM TableName t) sub1 
LEFT JOIN 
    (SELECT t.Contract, t.Amendment, t.Value, t.Billed, t.Remainder, 
      ROW_NUMBER() OVER (PARTITION BY t.Contract 
      ORDER BY CASE WHEN t.Amendment IS NULL THEN 1 ELSE t.Amendment END) rn 
     FROM TableName t) sub2 
ON sub1.Contract = sub2.Contract AND sub1.rn = sub2.rn + 1