我在使用SQL Server处理ETL流程时遇到困难。我必须计算期初和期末余额,而客户仅提供借方(将扣除余额)和贷方(将添加余额)交易。
我有用于说明的桌子
任何帮助将不胜感激。 :)
答案 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