gpt4 book ai didi

SQL Server FOR EACH 循环

转载 作者:行者123 更新时间:2023-12-01 17:40:57 27 4
gpt4 key购买 nike

我有以下 SQL 查询:

DECLARE @MyVar datetime = '1/1/2010'    
SELECT @MyVar

这自然会返回“1/1/2010”。

我想做的是有一个日期列表,例如:

1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010

然后我想对数字进行 FOR EACH 并运行 SQL 查询。

类似于(伪代码):

List = 1/1/2010,2/1/2010,3/1/2010,4/1/2010,5/1/2010

For each x in List
do
DECLARE @MyVar datetime = x

SELECT @MyVar

所以这会返回:-

2010 年 1 月 1 日 2010年2月1日 2010年3月1日 2010年4月1日 2010年5月1日

我希望将数据作为一个结果集返回,而不是多个结果集,因此我可能需要在查询末尾使用某种联合,因此循环的每次迭代都会联合到下一个。

编辑

我有一个接受“截止日期”参数的大型查询,我需要运行它 24 次,每次都有一个我需要能够提供的特定截止日期(这些日期将是动态的)我想要避免使用 union all 加入查询重复 24 次,就好像我需要返回并添加其他列一样,这将非常耗时。

最佳答案

SQL 主要是一种面向集合的语言 - 在其中使用循环通常不是一个好主意。

在这种情况下,使用递归 CTE 可以获得类似的结果:

with cte as
(select 1 i union all
select i+1 i from cte where i < 5)
select dateadd(d, i-1, '2010-01-01') from cte

关于SQL Server FOR EACH 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10300414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com