我有像
这样的表格rno intial consumed bal
1 500 120 380
2 0 100 -100
3 0 80 -80
我得到的值如上,但我需要如下的值 我有一个初始设定值500,我希望扣除消费价值,并应显示平衡,因为380应该显示下一行的初始余额,因为我被困在这里,同时为此创建视图,但我已经超过了创建程序为此,但我只需要查看
rno intial consumed bal
1 500 120 380
2 380 100 280
3 280 80 200
答案 0 :(得分:2)
您没有提到哪个RDBMS,但这似乎为您提供了在SQL Server(以及可能的其他RDBMS)视图中寻找的运行总计
SELECT * INTO Test FROM (VALUES
(1, 500, 120),
(2, 0, 100),
(3, 0, 80)) A(rno,initial,consumed);
GO
CREATE VIEW SomeView AS
WITH A AS(
SELECT rno
,initial
,consumed
,SUM(initial - consumed) OVER (ORDER BY rno ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) bal
FROM Test)
SELECT
rno
,COALESCE(LAG(bal) OVER (ORDER BY rno), initial) initial
,consumed
,bal
FROM A;
GO
SELECT * FROM SomeView ORDER BY rno
rno initial consumed bal
----------- ----------- ----------- -----------
1 500 120 380
2 380 100 280
3 280 80 200