首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

生成視圖,統計字段的問題,開新貼加重分提問,该如何解决

2012-02-22 
生成視圖,統計字段的問題,開新貼加重分提問表1idOriginal110220表2id表1idActua1122113134255210視圖Origi

生成視圖,統計字段的問題,開新貼加重分提問
表1
id       Original
1               10
2               20
表2
id               表1id         Actua
1                     1                 2
2                     1                 1  
3                     1                 3  
4                     2                 5
5                     2                 10  
視圖
Original$                             Actua$                             Balance$
10
                                              2                                       8
                                              1                                       7
                                              3                                       4
20
                                              5                                       15
                                              10                                       5

          數據庫里面只有Original跟Actua這兩個字段,Balance是計算出來的。也就是Balance=Original-Actua這樣循環的減下去,得Balance這個值,再用Balance再減Actua又得Balance我想用視圖來表示上面哪樣的表怎么表示,
謝謝

[解决办法]
Create View V_TEST
As
Select TOP 100 Percent Original, Actua, Balance From
(
Select id, 0 As 表2id, Original, 0 As Actua, 0 As Balance From 表1
Union All
Select 表1id, id, 0, Actua, A.Original - (Select SUM(Actua) From 表2 Where id <= B.id) As Balance
From 表1 A Inner Join 表2 B On A.id = B.表1id
) A
Order By id, 表2id
GO
[解决办法]
--上面有些bug,用下面的

--建立測試環境
Create Table 表1
(idInt,
OriginalInt)
Insert 表1 Select 1, 10
Union All Select 2, 20



Create Table 表2
(idInt,
表1idInt,
ActuaInt)
Insert 表2 Select 1, 1, 2
Union All Select 2, 1, 1
Union All Select 3, 1, 3
Union All Select 4, 2, 5
Union All Select 5, 2, 10
GO
--建立視圖
Create View V_TEST
As
Select TOP 100 Percent Original, Actua, Balance From
(
Select id, 0 As 表2id, Original, 0 As Actua, 0 As Balance From 表1
Union All
Select 表1id, B.id, 0, Actua, A.Original - (Select SUM(Actua) From 表2 Where id <= B.id And 表1id = B.表1id) As Balance
From 表1 A Inner Join 表2 B On A.id = B.表1id
) A
Order By id, 表2id
GO
--測試
Select * From V_TEST
GO
--刪除測試環境
Drop Table 表1, 表2
Drop View V_TEST
--結果
/*
OriginalActuaBalance
1000
028
017
034
2000
0515
0105
*/
[解决办法]
怎麼了?不符合你的要求還是怎樣?

热点排行