【发布时间】:2016-06-15 18:38:41
【问题描述】:
有没有办法在 SQL 中完成这样的事情:
DECLARE @iter = 1
WHILE @iter<11
BEGIN
DECLARE @('newdate'+@iter) DATE = [some expression that generates a value]
SET @iter = @iter + 1
END
最后我会有 10 个变量:
@newdate1
@newdate2
@newdate3
@newdate4
@newdate5
@newdate6
@newdate7
@newdate8
@newdate9
@newdate10
更新:
根据评论,我想我应该说明为什么我想这样做。我正在使用 Report Builder 3.0。我将制作一份报告,其中输入将是 start date 和 end date(除了一个其他参数)。这将生成日期范围之间的数据。但是,用户还希望在设置的 2013 -> 当前年份中检查所有其他年份的相同日期范围。
棘手的部分是:用户可以在 2013 年和当前年份之间的 任何 年份输入日期范围,我需要返回输入年份的数据以及其他年份的数据。例如,如果用户输入 2014 年 1 月 1 日 - 2014 年 6 月 1 日,那么我需要返回相同的范围,但要返回 2013、2015 和 2016 年。
示例输入:
1/1/2016 - 6/1/2016
报告必须为这些值生成数据:
1/1/2013 - 6/1/2013
1/1/2014 - 6/1/2014
1/1/2015 - 6/1/2015
1/1/2016 - 6/1/2016
如果有更好的方法可以做到这一点,我会全力以赴。
【问题讨论】:
-
(1) 使用您正在使用的数据库(可能是 SQL Server)标记您的问题。 (2) 不。没有办法简单地做到这一点。
-
您为什么要这样做?可能有更好的方法来做你想做的任何事情。例如,临时表或临时表变量。
-
@Nikki9696 可能有。我将根据总体目标编辑我的问题。
-
您很可能正在寻找临时表。
-
您可以只使用变量作为开始日期和结束日期,并使用 DATEADD 逻辑来获取其他年份。在没有 10 个变量的 WHERE 子句中,还有许多其他方法可以做到这一点。
标签: sql sql-server loops variables reportbuilder3.0