Select 
A.*,
(Select SUM(输入金额 - 输出金额) From T_A Where 时间 <= A.时间) As 累计金额,
DateDiff(dd, 时间, IsNull((Select TOP 1 时间 From T_A Where 时间 > A.时间 Order By 时间), GetDate())) As 天数 
From
T_A A

解决方案 »

  1.   

    Create Table T_A
    (编号 Int,
     时间 Varchar(10),
     输入金额 Int,
     输出金额 Int)
    Insert T_A Select 1,            '2007-3-1',    30,        0
    Union All Select            2,            '2007-3-15',    0,        40
    Union All Select            3,            '2007-3-20',    150,      0
    GO
    Select 
    时间,
    输入金额,
    输出金额,
    (Select SUM(输入金额 - 输出金额) From T_A Where 时间 <= A.时间) As 累计金额,
    DateDiff(dd, 时间, IsNull((Select TOP 1 时间 From T_A Where 时间 > A.时间 Order By 时间), GetDate())) As 天数 
    From
    T_A A
    GO
    Drop Table T_A
    --Result
    /*
    时间 输入金额 输出金额 累计金额 天数
    2007-3-1 30 0 30 14
    2007-3-15 0 40 -10 5
    2007-3-20 150 0 140 11
    */
      

  2.   

    我上面就是按照時間來計算的,加上一個排序就是你要的結果Select 
    时间,
    输入金额,
    输出金额,
    (Select SUM(输入金额 - 输出金额) From T_A Where 时间 <= A.时间) As 累计金额,
    DateDiff(dd, 时间, IsNull((Select TOP 1 时间 From T_A Where 时间 > A.时间 Order By 时间), GetDate())) As 天数 
    From
    T_A A
    Order By 时间
      

  3.   

    Create Table T_A
    (编号 Int,
     时间 Varchar(10),
     输入金额 Int,
     输出金额 Int)
    Insert T_A Select 1,            '2007-3-1',    30,        0
    Union All Select            2,            '2007-3-15',    0,        40
    Union All Select            3,            '2007-3-20',    150,      0
    Union All Select            4,            '2007-3-17',    150,      0
    GO
    Select 
    时间,
    输入金额,
    输出金额,
    (Select SUM(输入金额 - 输出金额) From T_A Where 时间 <= A.时间) As 累计金额,
    DateDiff(dd, 时间, IsNull((Select TOP 1 时间 From T_A Where 时间 > A.时间 Order By 时间), GetDate())) As 天数 
    From
    T_A A
    Order By 时间
    GO
    Drop Table T_A
    --Result
    /*
    时间 输入金额 输出金额 累计金额 天数
    2007-3-1 30 0 30 14
    2007-3-15 0 40 -10 2
    2007-3-17 150 0 140 3
    2007-3-20 150 0 290 11
    */