2015-05-29 59 views
3

這就是我在我的SQL SERVER數據庫表中所得到的,我正在嘗試計算員工的餘額。 我的實際數據是:在SQL SERVER 2008中累積添加

EmpId EmpName EvalDate    OpeningEL EnjoyedEL BalanceEL 
12 CHANDRA 2014-04-01 18:30:00.000 0.95  0.00   0.95 
12 CHANDRA 2014-05-01 18:30:00.000 1.30  0.00   1.30 
12 CHANDRA 2014-06-01 18:30:00.000 1.20  1.00   1.20 
12 CHANDRA 2014-07-01 18:30:00.000 1.25  0.00   1.25 
12 CHANDRA 2014-08-01 18:30:00.000 1.25  1.00   1.25 

但我需要在下面的方式

EmpId EmpName EvalDate    OpeningEL EnjoyedEL BalanceEL 
12 CHANDRA 2014-04-01 18:30:00.000 0.95  0.00   0.95 
12 CHANDRA 2014-05-01 18:30:00.000 2.25  0.00   2.25 
12 CHANDRA 2014-06-01 18:30:00.000 3.45  1.00   2.45 
12 CHANDRA 2014-07-01 18:30:00.000 3.70  0.00   3.70 
12 CHANDRA 2014-08-01 18:30:00.000 4.95  1.00   3.95 

上一頁BalanceELs添加旁邊OpeningELs數據。

那麼,如何實現這一點....請提出建議。

+0

沒有'EL與輸入數據1.00' – ughai

+0

@ughai:我沒有得到你......你能PLZ闡述更多.. – user3657122

+0

在您的源數據,沒有與EnjoyedEL沒有記錄爲1.然而,在我們的輸出中,有2條記錄的EnjoyedEL爲1. – ughai

回答

0

您可以使用CROSS APPLYGROUP BY實現這一

OpeningELBalanceELCROSS APPLY將獲得當前和以前記錄的總和僱員。

SELECT 
    EL1.EmpId, 
    EL1.EmpName, 
    EL1.EvalDate, 
    Temp.OpeningEL, 
    EL1.EnjoyedEL, 
    Temp.BalanceEL 
FROM EmployeeLeave EL1 
CROSS APPLY 
(
    SELECT 
    SUM(OpeningEL) as OpeningEL, 
    SUM(BalanceEL) - SUM(EnjoyedEL) as BalanceEL 
    FROM EmployeeLeave EL2 
    WHERE EL2.EmpId = EL1.EmpId 
    AND EL2.EvalDate <= EL1.EvalDate 
)Temp; 
+0

- 「EL2.Prev_OpeningEL」此列不存在於兩個表 – user3657122

+0

thanx很多人,它工作正常:) – user3657122