SQL Server 中的复合 SUM [重复]

Posted

技术标签:

【中文标题】SQL Server 中的复合 SUM [重复]【英文标题】:Compounded SUM in SQL Server [duplicate] 【发布时间】:2014-03-10 11:56:11 【问题描述】:

在sql server中是否可以得到复合总和?例如

月薪总额

一月 1000 1000

二月 1200 2200

三月 1000 3200

。 . .

。 . .

请帮忙。

【问题讨论】:

哪个版本的sql server 你试过什么?如果您有任何低于 SQL 2012 的版本,这可能是一个不错的起点。 pawlowski.cz/2010/09/… @VijaykumarHadalgi 它没有任何标识列 那你是怎么定义主键的呢? 【参考方案1】:
Declare @t table( Months varchar(10), Salary int) 
insert into @t
select 'Jan', 1000 union all
select 'Feb', 1200 union all
select 'Mar', 1000
;With CTE as
(
select *,ROW_NUMBER()over(order by (select null))rn from @t
)
,CTE1 as
(
select a.*,salary [Total] from CTE a where rn=1
union all
select a.*,a.Salary+Total from CTE a inner join CTE1 b on a.rn-b.rn=1
)
select * from cte1

【讨论】:

【参考方案2】:

如果表结构是这样的table(id int identity(1,1),month varchar(10),salary int,total int)

那你可以试试:

select *,(select sum(salary) 
          from table b  
          where b.id<=a.id) as total 
from table a

DEMO

【讨论】:

以上是关于SQL Server 中的复合 SUM [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Microsoft SQL Server 中使用复合键

如何使用 SQL Server Management Studio 创建复合键?

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

SQL Server用表组织数据

SQL Server 重复数据

SQL Server 中的 XQuery 对零值进行 SUM