首页 > 解决方案 > SQL 中的 While 循环如何工作

问题描述

我正在使用 sql 中的 While 循环,并尝试在这些日期应用代码。

DECLARE @StartDate DATETIME = '2018-08-01';
DECLARE @EndDate DATETIME = '2018-08-15';

WHILE @StartDate < @EndDate

BEGIN

SELECT @StartDate 
SET @StartDate = @StartDate+1

END;

当我运行它时,我会在多个窗口中获得输出,尽管我希望它在同一个窗口中。

在此处输入图像描述

标签: sqlsql-server

解决方案


您的循环正在进行选择,因此循环的每次迭代都将提供一个新的查询结果窗口。如果您希望它作为一个结果集返回,则必须将其插入表中并选择循环之外的所有内容。

DECLARE @StartDate DATETIME = '2018-08-01';
DECLARE @EndDate DATETIME = '2018-08-15';
DECLARE @table TABLE (yourdate DATETIME)
WHILE @StartDate < @EndDate

BEGIN

INSERT INTO @table (yourdate)
SELECT @startdate 
SET @StartDate = @StartDate+1

END;

SELECT * 
FROM @Table

推荐阅读