SQL Server查询中的SELECT内部循环
我试图使用SQLServer中的函数F(a,b,x)获取一些列,比如20个值。基本上就像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
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和这里输入的值获得的。修改后的功能应该是可行的。