调整调度查询输出以遵循设置规则

时间:2016-09-06 18:30:18

标签: sql-server loops while-loop

如何根据同一列中的前一行评估后续行。

我有一个调度查询,其中包含需要根据几个条件进行调整的时间。

为简单起见,假设基本输出中的每一行都包含以小时为单位的计划时间。

  施万   1
  2
  4
  6
  6
  8

我需要调整输出以遵循设定规则,例如最小2小时间距。我的结果应该是:

  

Sch ....... Adj Sch
  1 ............. 1
  2 ............. 3
  4 ............. 5
  6 ............. 7
  6 ............. 9
  8 ............ 11

我假设我必须遍历表格但不确定如何。

1 个答案:

答案 0 :(得分:0)

在SQL Server中,

WHILE循环通常不受欢迎。您也可以选择使用CURSOR。既然你在SQL中询问了如何进行循环,那么基本概念就是:

DECLARE @counter as int
SET @Counter = 0
--Do something here to each row
WHILE @Counter < someNumberOrCountFromTheDatabase

BEGIN

SET @Counter = @Counter + 1
END

确保您正确地考虑了您的逻辑,否则您将面临无限循环的风险。

这是一个good SO answer,解释了CURSOR,LOOPS和可能使用递归CTE之间的区别。