读书人

生成字段的新加重

发布时间: 2012-02-22 19:36:55 作者: rapoo

生成,字段的,新加重分提
表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
*/
[解决办法]
怎了?不符合你的要求是怎?

读书人网 >SQL Server

热点推荐