【问题标题】:SQL SSMS Server Job - Can it calculate random values?SQL SSMS 服务器作业 - 它可以计算随机值吗?
【发布时间】:2018-04-02 03:11:50
【问题描述】:

我对这方面的 SQL 和 SSMS 非常陌生,所以如果这是一个简单的问题,我深表歉意。 我已经阅读了一些教程,并且我认为我了解如何安排和创建工作,但我不确定它在我的特定情况下如何工作:

我需要:

  • 获取一张表中的所有行[TRAINER table]
  • 对于每一行,
    • 根据该行的 [AverageSteps] 字段计算一个值,乘以 0.85 和 1.15 之间的随机双精度数
    • [TRAINER_SYNC] table 中添加一个新行,使用上面的随机值、行的[TrainerId] 字段和current DateTime

这可能吗? 我不太确定如何遍历行(如果可能的话),然后如何获取随机数。

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

谢谢

【问题讨论】:

    标签: sql scheduled-tasks ssms jobs


    【解决方案1】:

    手动循环遍历行通常是个坏主意,因为游标没有优化。改为应用集合操作。

    使用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() 创建的是小数,而不是双精度。如果您需要 output 为双精度,则需要 CAST 它。见this documentation

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

    【讨论】:

    • 谢谢 - 这应该足以让我继续前进。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2017-12-01
    • 2018-08-15
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多