2016-03-29 60 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

哦,非常感謝,我試圖在我的查詢中實現這一點,我非常高興與此感謝很多,我認爲你是偉大的專家..我將非常感謝你 –