想要使用动态值创建视图

时间:2016-03-29 06:08:16

标签: sql views

我有像

这样的表格
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

1 个答案:

答案 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