SELECT结果集具有固定值减量

时间:2016-02-01 18:51:23

标签: sql sql-server select

使用SQL Server 2008,我想创建一个结果集,其中动态列按固定值递减。

EG。考虑我有一个600行的表,我的动态列值应该从360开始,并且必须以25结尾(以递减的方式分布在选择的结果集中),这样

(360-25) / 600 ~ 0.5583

所以我的减量常数现在是0.5583

id   col2   col3   dynamic_col4 
----------------------------------
1      abc    xyz    360          
2      lmn    dzx    359.44    
3      ojk    yk2    358.88    
4      pqr    pjr    358.32   
5      tml    dse    357.76      
.
.
.
.
558    uyh    pol    26.11 
559    oxy    pec    25.55   
600    djq    omn    25.00  

查看结果集应如何从360开始,每行中该值减少0.5583,直到记录600达到25。

1 个答案:

答案 0 :(得分:1)

如果您的id列是连续的,则可以使用它来计算动态列值。或者使用row_number函数生成此序号并在计算中使用它。

select id,col2,col3,
360-((id-1)*0.5583) as dynamic_col4
from yourtable
where id>=1 and id<=600

要获得要减少的值,

select id,col2,col3,
360-((id-1)*t.dec_val) as dynamic_col4
from yourtable y
cross join (select (max(col3)-min(col3))/1.0*count(*) as dec_val from yourtable) t
where id>=1 and id<=600