2016-03-29 58 views
0

我有表像想与动态值创建视图

rno intial consumed bal 
1 500  120  380 
2 0  100  -100 
3 0  80  -80 

我收到值以上,但我需要的值类似下面 我INTIAL设定值500从我要扣除消费价值和应像380显示余额prvious余额应在下一行,请帮我INTIAL余额显示为我在这里stucked同时创造鉴于这一点,但我已经suceeded这个创造的过程,但我只需要查看

rno intial consumed bal 
1 500  120  380 
2 380  100  280 
3 280  80  200 
+0

对我来说,你需要运行总数....检查此问题http:// stackoverflow .com/questions/34354688/sql-remove-from-running-total或google SQL运行总数 – Veljko89

+0

您正在使用哪种RDBMS? –

回答

2

你不没有提到哪个RDBMS,但是似乎给你在SQL Server(也可能是其他RDBMSs)的视图中寻找的运行总数

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 
+0

哦,非常感谢,我试图在我的查询中实现这一点,我非常高兴与此感谢很多,我认为你是伟大的专家..我将非常感谢你 –