正在计算期初和期末余额 SQL 服务器

Calculating Beginning and Ending Balance SQL Server

我在使用 SQL 服务器处理 ETL 过程时遇到困难。我必须计算期初和期末余额,客户只提供Debit(将减去余额)和Credit(将添加余额)交易。

我有table来说明

如有任何帮助,我们将不胜感激。 :)

你试过这个吗?

SELECT 
    B.Date, 
    SUM(CR-DR) OVER(ORDER BY Date) - CR + DR AS Beginning,
    B.DR, B.CR, 
    SUM(CR-DR) OVER(ORDER BY Date) AS Ending 
FROM #bb AS B

示例数据如下:

IF OBJECT_ID('tempdb..#bb') IS NOT NULL DROP TABLE #bb

CREATE TABLE #bb(
    Datum DATE,
    DR INT,
    CR INT
);

INSERT INTO #bb
(
    Datum,
    DR,
    CR
)
VALUES
(   '20180101', -- Datum - date
    100,         -- DR - int
    0          -- CR - int
),
(   '20180102', -- Datum - date
    0,         -- DR - int
    300          -- CR - int
),
(   '20180103', -- Datum - date
    150,         -- DR - int
    0          -- CR - int
);

这是查询的结果:

Datum      Begining      DR          CR          Ending
---------- ----------- ----------- ----------- -----------
2018-01-01   0           100         0           -100
2018-01-02   -100        0           300         200
2018-01-03   200         150         0           50