2017-05-29 114 views
0

我试图在按升序对列进行排序后,计算SQL Server 2008 R2中列的累积总和。我不能使用rows unbounded preceding或以下版本,因为它仅适用于SQL Server 2012及更高版本。我用下面的代码:如何计算SQL Server 2008 R2中列的运行总数?

select 
    sub_code, 
    Roll_no, 
    Total_marks, 
    sum (Total_marks) over (order by Total_marks ASC) as cumulative_Total 
from table 

但我得到一个错误:

Incorrect syntax near 'order'

如何解决这个问题?不使用窗口函数将

回答

2

一种选择使用相关子查询来计算运行总计:

select 
    t1.sub_code, 
    t1.Roll_no, 
    t1.Total_marks, 
    (select sum(Total_marks) from table t2 
    where t2.Total_marks <= t1.Total_marks) as cumulative_Total 
from table t1 
order by t1.Total_marks 

这是假设你真的想用你的东西订购总运行试图总结,即Total_marks

(select sum(Total_marks) from table t2 
where t2.some_col <= t1.some_col) as cumulative_Total 
+0

这让有点混乱。我只是想重新排序依次递增total_marks列,然后生成从未使用过相关子查询累计marks..have新列。 –

+0

数据库中没有“重新排序”表格;唯一的顺序是您在查询时指定的顺序。你有没有尝试我的查询,如果是的话,你有什么问题? –

+0

offcourse重新排序将完成结果集..您的查询使用第二个表。我是否需要先将这些行传输到临时表? –

0

退房阿龙贝特朗的多个选项,包括优点和缺点出色答卷:一般情况下,如果你打算使用不同的列进行订购,你可以使用下面的相关子查询。

https://stackoverflow.com/a/11313533/3266499