在SQL SERVER 2008中累积添加
问题描述:
这就是我在我的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数据。
那么,如何实现这一点....请提出建议。
答
您可以使用CROSS APPLY
和GROUP BY
实现这一
OpeningEL
和BalanceEL
从CROSS 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
没有'EL与输入数据1.00' – ughai
@ughai:我没有得到你......你能PLZ阐述更多.. – user3657122
在您的源数据,没有与EnjoyedEL没有记录为1.然而,在我们的输出中,有2条记录的EnjoyedEL为1. – ughai