SQL SSMS服务器作业 - 它可以计算随机值吗?

时间:2018-04-02 03:11:50

标签: sql scheduled-tasks ssms jobs

我对SQL和SSMS的这一方很新,所以如果这是一个简单的问题我会道歉。 我一直在阅读一些教程,我认为我理解如何安排和创造一份工作,但我不确定它如何适用于我的特定情况:

我需要:

  • 从一个表[TRAINER table]
  • 获取所有行
  • 对于每一行,
    • 根据该行[AverageSteps]字段计算一个值,乘以0.85和1.15之间的随机双倍
    • [TRAINER_SYNC] table中添加一个新行,其中包含上面的随机值,行[TrainerId]字段和current DateTime

这可能吗? 我不太确定如何遍历行(如果它甚至可能),然后如何获得随机数。

有人知道这是否可能,或者是否有任何替代方案,或者我可以遵循的任何教程?

由于

1 个答案:

答案 0 :(得分:1)

在游标未优化的情况下,手动遍历行通常是一个坏主意。改为应用set操作。

使用INSERT INTO ... SELECT获取行,然后插入同步表。

将其创建为Transact-SQL作业步骤:

INSERT INTO trainer_sync (AverageSteps, TrainerId, Time)
SELECT AverageSteps * (RAND()*(1.15-0.85)+0.85), TrainerId, GETDATE()
FROM trainer;

注意rand()创建小数,而不是双精度。如果您需要输出为双倍,则需要CAST它。请参阅this documentation

Here's a guide到INSERT ...从MS中选择。