【问题标题】:SSMS - Changing Column Values on a daily, weekly, and monthly basisSSMS - 每天、每周和每月更改列值
【发布时间】:2017-08-10 13:08:31
【问题描述】:

我对 SSMS 还很陌生,但我正在尝试为 AI 角色实现每周和每月排行榜,该排行榜将根据数据库中的平均步数值每天更新,方差为 0.5 倍 -该值的 1.5 倍。

我还想分别重置每周和每月的每周和每月值(暂时不担心存储旧分数)。

我将如何在数据库中执行此操作?

这是我的桌子:

培训师表 ID, 姓名, 平均步数, 每周步数, 月步数

我在获取值的数学部分很好,但是

  • 如何运行事件/脚本以使用平均步数值更新每周和每月步数(这将每天执行一次)?
  • 如何运行事件/脚本来重置每周步数和每月步数?

我知道我想做的事情是可能的 - 我只是不确定如何 - 有人知道关于这个主题的任何好的教程吗?

【问题讨论】:

  • SQL 代理作业可以让您定期重复运行一个或多个任务。您可以通过 SSMS GUI 配置这些。

标签: sql-server database ssms database-events


【解决方案1】:

我会创建一个存储过程来执行更新。然后我会使用 SQL Server 代理作业安排存储过程每天运行。

在您的存储过程中,您将拥有三个部分。每次运行存储的 proc 时都会运行第一段代码,它会将 WeeklyStepsMonthlySteps 值更新为 AverageSteps 值。

下一部分将包含在IF 块中,并将重置WeeklySteps 值。您的 IF 条件类似于:

IF DATEPART(WEEKDAY,GETDATE()) = 1 --This is true only on Sundays

最后一部分也将包含在IF 块中,并将重置MonthlySteps 值。您的IF 条件类似于:

IF DATEPART(DAY,GETDATE()) = 1 --This is true only on the first of the month

【讨论】:

    【解决方案2】:

    就像@ADyson 所说,SQL 代理作业可以很好地解决这个问题。您可以将作业设置为每月/每周/每天运行。

    以下是用于设置 SQL 代理作业的 Microsoft 文档的链接: https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-job

    当然还有其他用于调度作业的选项,但由于您正在执行的操作包含在 SQL Server 中,因此代理作业最有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 2018-12-19
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多