SQL Server查询中的SELECT内部循环

SQL Server查询中的SELECT内部循环,sql,sql-server,Sql,Sql Server,我试图使用SQLServer中的函数F(a,b,x)获取一些列,比如20个值。基本上就像 SELECT col1, col2, F(a,b,1), F(a,b,2), ... F(a,b,20) FROM table 是否可以使用循环选择F(a,b,@i)其中0

我试图使用SQLServer中的函数F(a,b,x)获取一些列,比如20个值。基本上就像

SELECT 
    col1, col2, F(a,b,1), F(a,b,2), ... F(a,b,20) 
FROM 
    table
是否可以使用循环
选择F(a,b,@i)
其中0<
@i
<21

谢谢

SQL语句中没有“循环”。但是,您可以通过以下方式接近:

select col1, col2, n.n, f(a, b, n.n)
from table t cross join
     (select 1 as n union all select 2 union all select 3 . . .
      select 20
     ) n;
确切的语法取决于您使用的数据库。还有一些方法可以根据数据库再次生成数字


这将为表中的每行生成20行,而不是20列。如果您确实需要在列中显示结果,则可以对其进行数据透视。

可以动态生成字符串,然后将其作为SQL执行。但这并不漂亮。如果它总是1-20,我会把它写出来。数字不是固定的,但通常在20以下。目前我只是逐行写出来,如果你不得不把它放到另一个代码中,这看起来有点可怕。无论如何,谢谢你的友好回复!我认为你应该重写这个函数,这样你就不需要这样做了。SELECT语句返回一个关系,该关系必须具有固定的arity(列数)。你能告诉我们这个函数是做什么的吗?函数本身很简单,只需查询另外几个不同日期的表,这些表是通过DATEADD和这里输入的值获得的。修改后的功能应该是可行的。