Tsql 这个SQLWhile循环有什么问题?

Tsql 这个SQLWhile循环有什么问题?,tsql,while-loop,sql-server-2014,Tsql,While Loop,Sql Server 2014,此嵌套while循环仅成功执行最低级别的循环。它拒绝向@wKey添加1,即使我告诉它设置@wKey=@wKey+1。。。。我做错了什么?SQL不允许嵌套循环吗 DECLARE @fMinKey INT; DECLARE @fMaxKey INT; DECLARE @wMaxKey INT; DECLARE @wKey INT; DECLARE @wDate date; DECLARE @fcStart DATE; SET @fMinKey = (select min([fcKey]) from

此嵌套while循环仅成功执行最低级别的循环。它拒绝向@wKey添加1,即使我告诉它设置@wKey=@wKey+1。。。。我做错了什么?SQL不允许嵌套循环吗

DECLARE @fMinKey INT;
DECLARE @fMaxKey INT;
DECLARE @wMaxKey INT;
DECLARE @wKey INT;
DECLARE @wDate date;
DECLARE @fcStart DATE;

SET @fMinKey = (select min([fcKey]) from dbo.fact_Fc);

SET @fMaxKey = (select max([fcKey]) from dw.fact_Fc);

SET @wMaxKey = (select max([WellKey]) from dw.fact_Fc);

SET @wKey = 1;

SET @wDate = 
(select min([fapDate]) from dbo.dim_W where [Key] = @wKey);


SET @fcStart = 
(select min([Date]) from dw.fact_Fc where [wKey] = @wKey);


WHILE (@fMinKey <= @fMaxKey)
BEGIN

    WHILE (@wKey <= @wMaxKey)
    BEGIN
            WHILE (@wDate < @fcStart)
            BEGIN
                INSERT INTO dw.fact_FcTemp2 ([wKey], [Date], [pAmount], [fcKey], [AddedDate])
                VALUES (@wKey, @wDate, 0, @fMinKey, CURRENT_TIMESTAMP)
                SET @wDate = dateadd(DAY, 1, @wDate)
            END 
            SET @wKey = @wKey + 1

    END

    SET @fMinKey = @fMinKey + 1
END

结果表仅显示[wKey]=1,但当@wDate reach@fcStart看起来您从未将@wDate重置为初始状态时,它应该有多个不同wKey的行 所以下一个循环再次运行

您需要了解如何为下一个循环重置@wDate

还有3个循环可能是设计上的失误,sql性能根本不喜欢循环。
你能给我们展示一下数据结构和需要的结果吗?也许这是构造sql的方法,没有3个嵌套循环,因为它是嵌套的。该集合位于第一个WHILE循环结束后。换句话说,在第一个WHILE循环完成后,我想更改@wKey并重新启动原始循环。