我是一个 sql 新手,正在处理一个程序,我试图根据用户输入的三个字段(Deduction PayCodeCat 和 EmployeeID)捕获运行总计,但是如果员工不在表中,则运行总计列开始时为空。
简化程序:
更改程序 [dbo].[2023_ClaimsInsert] (
@PayCodeCat NVARCHAR(3) ,
@EmployeeID 整数 ,
@Deduction浮动 )AS 开始 设置编号;
插入.dbo.[2023_ClaimsTable] (
支付码猫 , 员工ID ,
扣除 ,
QW_RunningBalance ,
AS_RunningBalance ,
ZX_RunningBalance )价值观 (@PayCodeCat ,
@员工ID ,
@扣除 ,
(SELECT sum(Deduction)+@Deduction FROM 2023_ClaimsTable CL WHERE @PayCodeCat = 'QW' AND @EmployeeID = CL.EmployeeID) ,
(SELECT SUM(Deduction)+@Deduction FROM 2023_ClaimsTable CL WHERE @PayCodeCat = 'AS' AND @EmployeeID = CL.EmployeeID) ,
(SELECT SUM(Deduction)+@Deduction FROM 2023_ClaimsTable CL WHERE @PayCodeCat = 'ZX' AND @EmployeeID = CL.EmployeeID)
这些是结果,只要员工是表的新手,运行余额就从 Null 开始。
员工编号 | PayCodeCat | 演绎 | QW_RunningBalance | AS_RunningBalance | ZX_RunningBalance |
---|---|---|---|---|---|
1 | AS | 100 | 空 | ||
1 | AS | 200 | 300 | ||
1 | AS | 800 | 1100 | ||
2 | AS | 700 | 空 | ||
2 | AS | 200 | 900 | ||
1 | QW | 200 | 200 | 1100 |
我尝试修改值语句以包含 OR IS Null
我也尝试过使用 Exists 和 Not exists 但只是破坏了代码。