Calculation in Sql Server

前端 未结 6 729
孤街浪徒
孤街浪徒 2021-01-31 02:21

I trying to perform following calculation

Sample data:

CREATE TABLE #Table1
  (
     rno   int identity(1,1),
     ccp   varchar(50),
          


        
6条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-31 03:05

    Try this:

    ;with 
        val as (
            select 
                *, 
                (1 + col2 / 100.00) val,
                row_number() over(partition by ccp order by rno desc) rn
            from #Table1),
    res as (
            select 
                v1.rno, 
                --min(v1.ccp) ccp,
                --min(v1.col1) col1, 
                --min(v1.col2) col2, 
                min(v1.col3) col3, 
                sum(v2.col1 * power(v2.val, 1 + v2.rn - v1.rn)) sum_val
            from val v1
            left join val v2 on v2.ccp = v1.ccp and v2.rno <= v1.rno
            group by v1.rno)
    select *, col3 - isnull(sum_val, 0)
    from res
    

    But performance depends on indexes. Post index structure for details. Best performance can be achieved when you will split it into more temporary tables.

提交回复
热议问题