gpt4 book ai didi

sql - 自动更新查询 SQL

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:39 24 4
gpt4 key购买 nike

我试图让我的查询每年自动更新,这样每年都会增加一定的“债务”费用,但是无论我尝试什么方法,它都无法正常工作。我的目标是让它每年自动增加75000。以下是我尝试过但没有奏效的一些方法。

CASE
WHEN DATENAME(dy, GETDATE()) = 1 THEN Debt + 75000
ELSE Debt
END AS [Debtt]

我尝试使用“Debt = Debt + 75000”,就像我在 Java 中所知道的那样,但我在“=”符号处得到了错误的语法。所需值仅在 dayOfYear = 1 时有效,但会在 dayOfYear = 2 时返回初始值

这个我也试过

UPDATE Table
SET Debt = Debt + 75000
WHERE DATENAME(dy, GETDATE()) = 1

只有当我在那天执行查询时,这个才会起作用。如果我继续执行它,该值将继续增加 75000

最后但同样重要的是,我尝试添加一个带有变量的 IF 语句。

@MoneyDebt AS MONEY = 0

IF DATENAME(dy, GETDATE()) = 1
BEGIN
UPDATE initialTable
SET @MoneyDebt = @MoneyDebt + 75000
END
-- useless statements
SELECT @MoneyDebt AS [Debt]

这样,当 dayOfYear 不同于 1 时,它实际上使 MoneyDebt=0,而当它为 1 时,由于某种原因它实际上使 MoneyDebt = 150000(这是所需值的两倍)

在过去的 3 天里,我一直在为这个问题绞尽脑汁,尝试各种可能性并在线检查所有内容。是否根本不可能对 SQL 进行自动更新?

需要注意的是我使用的是SQL Server 2014

最佳答案

你想做的有点别扭。您可以在每年的第一天运行一个作业来自动执行更新。

不过,我的建议更简单。只保留数据的第一年,然后根据已经过去的年数添加一个值来进行增量。您可以在 View 中执行此操作。或者,您可以使用计算列执行此操作:

alter table t
add debtt as ( debt + 75000 + datediff(year, orig_date, getdate()) );

debtt 列将具有更新后的值。

关于sql - 自动更新查询 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com