我有一个SQL Server表,并且已经过了一天并且结束了列。我想要做的是遍历表并查明enddate是否小于系统日期。如果是这样,那么差异就是过去的天数。然后我将用没有天数更新elapseddays列。 elapseddays列是数字。下面是tsql代码:
WHILE (SELECT EndDate FROM LiftingSummary) < GETDATE()
BEGIN
UPDATE LiftingSummary
SET ElapsedDays = DATEDIFF(DAY, GETDATE(), EndDate)
END
如果我运行代码,我会收到以下错误: 子查询返回的值超过1。当子查询遵循=,!=,&lt;,&lt; =,&gt;,&gt; =或子查询用作表达式时,不允许这样做。
绝望,不知道该怎么做。我需要帮助。谢谢。
答案 0 :(得分:4)
你不应该循环
但是,打破错误消息
WHILE (SELECT EndDate FROM LiftingSummary) < GETDATE()
那个选择可以返回多行,我怀疑它是
这正是该错误消息告诉您的内容
这是你的意思吗?
UPDATE LiftingSummary
SET ElapsedDays = DATEDIFF(DAY, EndDate, GETDATE())
WHERE EndDate < GetDate()