现在的位置: 首页 > 综合 > 正文

sql

2013年09月12日 ⁄ 综合 ⁄ 共 3371字 ⁄ 字号 评论关闭

Create Table #Feature
(FeatureName Nvarchar(50),
ChangeSize int)

Declare @FeatureName Nvarchar(50)
Declare @TR2ClientSize int
Declare @TR2ServerSize int
Declare @TR4AClientSize int
Declare @TR4AServerSize int
Declare @TR5ClientSize int
Declare @TR5ServerSize int
Declare @TR6ClientSize int
Declare @TR6ServerSize int
Declare @TRGAClientSize int
Declare @TRGAServerSize int

Declare @LastFeatureName Nvarchar(50)
Declare @ChangeSize int
Declare @LastValidSize int
Declare @NowSize int
Declare @NextSize int
Declare @IsCount bit

Set @LastFeatureName=''
Set @LastValidSize=0
Set @ChangeSize=0
Set @IsCount=0

DECLARE GetSub Cursor For
SELECT FeatureName,TR2ClientSize,TR2ServerSize,TR4AClientSize,TR4AServerSize,TR5ClientSize,
TR5ServerSize,TR6CientSize,TR6ServerSize,TRGAClientSize,TRGAServerSize
FROM Field_FeatureSize
Order by FeatureName,PID

OPEN GetSub
FETCH NEXT FROM GetSub INTO @FeatureName,@TR2ClientSize,@TR2ServerSize,@TR4AClientSize,@TR4AServerSize,
@TR5ClientSize,@TR5ServerSize,@TR6ClientSize,@TR6ServerSize,@TRGAClientSize,@TRGAServerSize
WHILE @@FETCH_STATUS = 0
BEGIN
Set @IsCount=0
If @FeatureName!=@LastFeatureName
Begin
Insert Into #Feature(FeatureName,ChangeSize) Values(@LastFeatureName,@ChangeSize)
Set @LastFeatureName=@FeatureName
Set @ChangeSize=0
Set @LastValidSize=0
End
--第一次求变化
Set @NowSize=IsNULL(TR2ClientSize,0)+ISNULL(TR2ServerSize,0)
Set @NextSize=IsNULL(TR4AClientSize,0)+ISNULL(TR4AServerSize,0)
IF @NowSize>0
Set @LastValidSize=@NowSize
IF @NowSize>0 And @NextSize >0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@NextSize)
If @IsCount=0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
End
Else IF @NowSize>0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
--第二次求变化
Set @NowSize=IsNULL(TR4AClientSize,0)+ISNULL(TR4AServerSize,0)
Set @NextSize=IsNULL(TR5ClientSize,0)+ISNULL(TR5ServerSize,0)
IF @NowSize>0
Set @LastValidSize=@NowSize
IF @NowSize>0 And @NextSize >0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@NextSize)
If @IsCount=0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
End
Else IF @NowSize>0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
--第三次求变化
Set @NowSize=IsNULL(TR5ClientSize,0)+ISNULL(TR5ServerSize,0)
Set @NextSize=IsNULL(TR6ClientSize,0)+ISNULL(TR6ServerSize,0)
IF @NowSize>0
Set @LastValidSize=@NowSize
IF @NowSize>0 And @NextSize >0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@NextSize)
If @IsCount=0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
End
Else IF @NowSize>0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
--第四次求变化
Set @NowSize=IsNULL(TR6ClientSize,0)+ISNULL(TR6ServerSize,0)
Set @NextSize=IsNULL(TRGAClientSize,0)+ISNULL(TRGAServerSize,0)
IF @NowSize>0
Set @LastValidSize=@NowSize
IF @NowSize>0 And @NextSize >0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@NextSize)
If @IsCount=0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End
End
Else IF @NowSize>0
Begin
Set @ChangeSize=@ChangeSize+Abs(@NowSize-@LastValidSize)
Set @IsCount=1
Set @LastValidSize=@NowSize
End

FETCH NEXT FROM GetSub INTO @FeatureName,@TR2ClientSize,@TR2ServerSize,@TR4AClientSize,@TR4AServerSize,
@TR5ClientSize,@TR5ServerSize,@TR6ClientSize,@TR6ServerSize,@TRGAClientSize,@TRGAServerSize
End
CLOSE GetSub
DEALLOCATE GetSub

Select * From #Feature

Drop Table #Feature

【上篇】
【下篇】

抱歉!评论已关闭.