Sql server 如何在SQL临时表中动态传递标量值

Sql server 如何在SQL临时表中动态传递标量值,sql-server,tsql,Sql Server,Tsql,我有一个当前查询,如下所示 DECLARE @start BIGINT =2019, @end BIGINT =2020 DECLARE @yeartable table ( yr BIGINT) WHILE (@start <= @end) BEGIN INSERT INTO @yeartable SELECT @start SET @start = @start + 1 END 对于@end,我将使用 SELECT MIN(fiscal_yea

我有一个当前查询,如下所示

DECLARE @start BIGINT =2019, @end BIGINT =2020

DECLARE @yeartable table ( yr BIGINT)

WHILE (@start <= @end)
BEGIN
    INSERT INTO @yeartable
        SELECT @start

    SET @start = @start + 1
END
对于@end,我将使用

 SELECT MIN(fiscal_year)
 FROM a.b
SELECT MAX(fiscal_year)
FROM a.b

这可能吗?提前感谢。

您可以通过以下方式分配变量:

SELECT @start = MIN(fiscal_year)
    FROM a.b

SELECT @end = MAX(fiscal_year)
    FROM a.b

我想我找到了答案

        DECLARE 
@start BIGINT =(SELECT MIN(fiscal_year)
FROM
a.b), 
@end BIGINT = (SELECT MAX(fiscal_year) 
FROM
a.b])

DECLARE @yeartable table ( yr BIGINT)

while (@start <= @end)
begin
    insert into @yeartable
    select @start

    set @start = @start+1
end

解决这类问题最好使用数字表,而不是循环。这样的表比参数化的WHERE更容易接受,或者您可以使用表值函数。@jeroenmoster您能给我一个查询示例吗