使用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。
答案 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