Sql 如何计算累计费用
我已经使用sql查询在crystal中生成了一个报告。其中包含以下字段。Sql 如何计算累计费用,sql,crystal-reports,Sql,Crystal Reports,我已经使用sql查询在crystal中生成了一个报告。其中包含以下字段。 |账户名称|预算|当期费用| |-----------|--------|------------------| |salaeries | 234567 | 1234| |用品| 467543 | 3547| 还有一列是累计费用。请告诉我如何计算累计费用 累计费用是连续费用的总和,通常由给定的时间段决定 By implementing following logic in your proced
|账户名称|预算|当期费用|
|-----------|--------|------------------|
|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-它不是预算和当前费用的增加。当前费用的后续增加被称为“累计费用”…你在这方面做了什么…你尝试了什么…分享你的研究小心提供基本信息…因此不是编码服务…你应该正确阅读它。正如我所写的,我想知道如何计算累积。这是最简单的解释,我不知道你在说什么。我写的是给我提供代码吗。我需要解释。是什么?以及我们如何计算。评论前请先阅读问题。谢谢