在 SQL 中,我是否根据以“”开头的字段创建运行总计?

问题描述 投票:0回答:0

我是一个 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

  • (SELECT sum(Deduction)+@Deduction FROM AP_2023_ClaimsTable CL WHERE @PayCodeCat = 'AP' AND (@EmployeeID = CL.EmployeeID OR CL.EmployeeID IS NULL))

我也尝试过使用 Exists 和 Not exists 但只是破坏了代码。

procedure cumulative-sum
© www.soinside.com 2019 - 2024. All rights reserved.