我对SQL和SSMS的这一方很新,所以如果这是一个简单的问题我会道歉。 我一直在阅读一些教程,我认为我理解如何安排和创造一份工作,但我不确定它如何适用于我的特定情况:
我需要:
[TRAINER table]
[AverageSteps]
字段计算一个值,乘以0.85和1.15之间的随机双倍[TRAINER_SYNC] table
中添加一个新行,其中包含上面的随机值,行[TrainerId]
字段和current DateTime
这可能吗? 我不太确定如何遍历行(如果它甚至可能),然后如何获得随机数。
有人知道这是否可能,或者是否有任何替代方案,或者我可以遵循的任何教程?
由于
答案 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中选择。