Sql 如何计算累计费用

Sql 如何计算累计费用,sql,crystal-reports,Sql,Crystal Reports,我已经使用sql查询在crystal中生成了一个报告。其中包含以下字段。 |账户名称|预算|当期费用| |-----------|--------|------------------| |salaeries | 234567 | 1234| |用品| 467543 | 3547| 还有一列是累计费用。请告诉我如何计算累计费用 累计费用是连续费用的总和,通常由给定的时间段决定 By implementing following logic in your proced

我已经使用sql查询在crystal中生成了一个报告。其中包含以下字段。

|账户名称|预算|当期费用|
|-----------|--------|------------------|
|salaeries | 234567 | 1234|
|用品| 467543 | 3547|


还有一列是累计费用。请告诉我如何计算累计费用

累计费用是连续费用的总和,通常由给定的时间段决定

            By implementing following logic in your procedure you will get cumulative expense 
            Create  table   #Temp
            (
            id int identity(1,1),
            AccountName varchar(15),
            Budget numeric(18,0),
            CurrentExpense numeric(18,0)
            )

            insert into #Temp
            select 'salaeries',234567,1234             
            union
            select 'Supplies',467543,3547             
            union
            select 'Maintenance',10000,2000
            union
            select 'Lighting',5000,2000

            select * from #Temp order by Id


            select 
            t1.Id,
            t1.AccountName,
            t1.Budget, 
            t1.CurrentExpense,
            SUM(t2.CurrentExpense) as CumulativeExpense

            from #Temp t1
            inner join #Temp t2 
            on t1.id >= t2.id

            group by 
            t1.Id,
            t1.AccountName,
            t1.Budget, 
            t1.CurrentExpense

            order by t1.id
使用CTE或自联接的另一种方法是在SQL Server 2012及更高版本中使用OVER子句和SUM()等窗口函数

在这种情况下,您可以将分区参数留空,它将默认为整个集合

SELECT    AcctName
        , Budget
        , [Current Expenses]
        , SUM([Current Expenses]) OVER(ORDER BY acctName ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Cumulative Expenses]
FROM    #Temp
理解OVER子句的好处很有用,因为它可以让您轻松地在数据分区上执行窗口函数


查看更多详细信息和示例。

您的意思是说当前费用的总和是累计费用?它是?我需要解释什么应该是累积的。如果我有这两个字段。它是预算和当前费用的相加。。我已经有疑问了。。请让我解释一下应该怎么做be@Kirat-它不是预算和当前费用的增加。当前费用的后续增加被称为“累计费用”…你在这方面做了什么…你尝试了什么…分享你的研究小心提供基本信息…因此不是编码服务…你应该正确阅读它。正如我所写的,我想知道如何计算累积。这是最简单的解释,我不知道你在说什么。我写的是给我提供代码吗。我需要解释。是什么?以及我们如何计算。评论前请先阅读问题。谢谢