循环使用TSQL

时间:2015-10-23 16:39:39

标签: sql-server tsql

我有一个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; =或子查询用作表达式时,不允许这样做。

绝望,不知道该怎么做。我需要帮助。谢谢。

1 个答案:

答案 0 :(得分:4)

你不应该循环
但是,打破错误消息

WHILE (SELECT EndDate FROM LiftingSummary) < GETDATE()

那个选择可以返回多行,我怀疑它是
这正是该错误消息告诉您的内容

这是你的意思吗?

UPDATE LiftingSummary
SET ElapsedDays = DATEDIFF(DAY, EndDate, GETDATE())
WHERE EndDate < GetDate()