SQL多层查询后再用窗口,求累计和,代码运行速度特别慢,求简化方案,多谢了

SQL多层查询后再用窗口,求累计和,代码运行速度特别慢,求简化方案,谢谢了
代码目的如下,对一组数据根据条件分组求和,然后每行求和的结果/整列和 的百分比,然后从大到小排序,再求累加,最后给分类的名字。(其实就是做ABC Analysis的思路)。
大概结构是这样:

select  * from(
【原始代码】
) as d
然后生成窗口,再运行累加的计算,就是累加这步计算特别慢。
原始代码的结果如下:
SQL多层查询后再用窗口,求累计和,代码运行速度特别慢,求简化方案,多谢了

我现在的代码,如下

create view acc as   ’生成窗口

select * from 
(
    select *,rownum=row_number() over (order by [%Value] desc) from    ‘给一列序列号
    (
        select *,
        (A.TotalCA/B.SUMValue) AS [%Value], 
        (A.TotalKG/B.SUMVolume) as [%Volume]

       FROM(

             select [Supply Chain],[Region],[Mat type name],[Plant],[Mat name],[MONTH],
            SUM([Vol INV total KG]) as TotalKG,
            SUM([Val INV total CA]) AS TotalCA

        from [INVENTORY$]

        GROUP BY [Supply Chain],[Region],[Mat type name],[Plant],[Mat name],[Month]

       )A,
       (select sum([Val INV total CA]) AS SUMValue,
       sum([Vol INV total KG]) as SUMVolume 
   FROM [INVENTORY$])B
 ) as c


) as d
然后在另外一个SQL窗口输入如下代码用于求累加的结果:
select *, (select sum([%Value]) from acc as e where rownum<= f.rownum) as accumulaSumVal
from acc as f
能运行,但是速度特别慢,一个多小时才出来不到600行,平常用SQL都是很快的,所以我想是因为用了窗口所以慢还是因为什么? 我原始数据有200,000多行,实在不行。
求各位高手指教。
------解决思路----------------------

这种不断累加的计算,其实用sql来实现,效率还是比较低的。

在sql server 2012中新增了一部分分析函数,其中对 sum函数做了扩展,可以通过 sum(v) over(partition by ... order by ...)

对列v的值进行累计求和,效率 应该会比 单一的 rownum<= f.rownum 来的快一点。

建议实在不行,就用游标来实现,可以做到 只对表扫描1遍,就可以达到累计求和的目的,速度应该会提高上百倍SQL多层查询后再用窗口,求累计和,代码运行速度特别慢,求简化方案,多谢了