Sql While循环作为Select语句中的计算字段
我试图实现一个利用牛顿方法的计算场。我有f(x)和f'(x),当我以静态参数“while begin”的形式单独运行一次计算时,计算工作正常。但是,我需要牛顿方法在SELECT语句中为查询中自己列中的每一行运行 “完美世界”伪代码如下:Sql While循环作为Select语句中的计算字段,sql,for-loop,while-loop,newtons-method,Sql,For Loop,While Loop,Newtons Method,我试图实现一个利用牛顿方法的计算场。我有f(x)和f'(x),当我以静态参数“while begin”的形式单独运行一次计算时,计算工作正常。但是,我需要牛顿方法在SELECT语句中为查询中自己列中的每一行运行 “完美世界”伪代码如下: DECLARE @x AS Float DECLARE @count AS INT = 1 SELECT Col1 ,Col2 ,Col3 , Set @x = col1 Then DO ( FOR @cou
DECLARE @x AS Float
DECLARE @count AS INT = 1
SELECT
Col1
,Col2
,Col3
, Set @x = col1
Then DO (
FOR @count = 1 to 100
SET @x = @x - f(@x)/f'(@x)
SET @count = @count + 1
NEXT @count )
OUTPUT @x AS 'Newtons Method'
例如:f(@x)=和f'(@x)可以定义为任意方程。i、 ef(@x)=功率(@x,1/2)和f'(@x)=功率(@x/2,-1/2)
输出的形式如下:
col1 col2 col3 Newtons Method
float float float float
. . . .
. . . .
. . . .
用于查询中的所有记录
限制1)我没有权限在数据库中创建存储的进程或函数
限制2)我必须仅使用TSQL完成此任务
这可能吗 哪里有
f(x)和f'(x)
?还有,输出应该是什么样的?使用附加信息更新有两种常见的方法来避免SQL Server中的显式循环:数字表和递归CTE。在您的例子中,@x
的下一个值以一种不明显的方式取决于先前的结果,因此递归CTE可能是这里唯一的方法。递归CTE似乎是一个攻击计划。那么,如何为每个记录部署递归CTE呢?