SQL - 以小数格式获取结果

时间:2016-04-11 08:29:30

标签: sql sql-server sql-server-2008-r2

我有一个包含以下数据的表 -

MinFormat(int)  MaxFormat(int)  Precision(nvarchar)
  -2              3             1/2

现在我希望SP的结果为 -

 -2
 -3/2 
 -1 
 -1/2 
  0 
  1/2 
  1 
  3/2  
  2 
  5/2 
  3

有没有可以给出这样结果的函数或脚本?

想法是根据精度值,将最小边界(MinFomrat col值为整数)的结果创建为最大边界(MaxFormat Col值为整数)。

因此,在上面的例子中,值应该从-2开始,并根据精度值(1/2)生成下一个值,直到达到3

1 个答案:

答案 0 :(得分:0)

WITH cte as
(
    SELECT CAST(MinFormat as float) as data, MaxFormat, CAST(Precision as float) as Precision
        FROM (VALUES (-2, 3, N'0.5')) as your_table(MinFormat, MaxFormat, Precision)
    UNION ALL
    SELECT CAST((data + Precision) as float) as data, MaxFormat, Precision
        FROM cte
        WHERE data + Precision <= MaxFormat
)
SELECT data FROM cte ORDER BY data OPTION (MAXRECURSION 0)