我有一个包含PRICEDATE
和UNITPRICE
我正在创建一个CTE
来为最新的PRICEDATE
和今天之间的每一天创建一行,以便我们可以使用演示数据填充表格(这是一个演示系统)
我想以最新的UNITPRICE
作为起点,然后生成“真实的”#39;通过将下一行的UNITPRICE
作为一个随机数,即之前的UNITPRICE
向上或向下一定数量来计算价格
例如:最新的UNITPRICE
是1.45678,所以我想通过获取前一个值(1.45678)并创建一个可以介于两者之间的任何位置的新数字来为下一行生成一个随机数 - 从最后一个(1.40678和1.50678)0.05和0.05。每个后续行是最后一行的随机偏差(-0.05到0.05)。
答案 0 :(得分:3)
您可以使用递归CTE执行此操作:
with p as (
select @PriceDate as pricedate, @UnitPrice as price
union all
select dateadd(day, 1, pricedate),
price + 0.05 - rand(checksum(newid()))*0.1
from p
where dateadd(day, 1, pricedate) <= @EndDate
)
select *
from p
OPTION (MAXRECURSION 0);
我不确定您希望如何提供初始数字,因此我将占位符放入具有初始值的变量中。
编辑:修改0.5到0.05以反映我的问题。麦克