计算SQL Server的期初和期末余额

时间:2018-07-24 11:46:35

标签: sql sql-server etl

我在使用SQL Server处理ETL流程时遇到困难。我必须计算期初和期末余额,而客户仅提供借方(将扣除余额)和贷方(将添加余额)交易。

我有用于说明的桌子

The bold part is where I have to do the calculation

任何帮助将不胜感激。 :)

1 个答案:

答案 0 :(得分:1)

您尝试过吗?

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