TSQL查询使用While循环迭代地替换游标



我有以下代码,其中我试图替换光标,我想迭代地逐个遍历每个字段,并每次将该单个字段的输出分配给变量@fil,但它为所有迭代打印所有内容。探索了许多论坛,但没有找到解决方案。我知道游标的解决方案,但这对我来说是新的!

DECLARE @i INT = 0;
DECLARE @count INT, @fil varchar(100) 
SELECT @count=  COUNT(DISTINCT m.FileID)
FROM [EDW].[FileMaster] m 
WHILE @i <= @count
BEGIN

@filid = SELECT DISTINCT m.FileID 
FROM [EDW].[FileMaster] m
--OFFSET @i ROWS   
--FETCH NEXT 1 ROWS ONLY  
SET @i = @i + 1;
print @fileid
END

期望输出为abc.txt def.txt ghi.txt etc

请帮帮我!提前谢谢。

您可以尝试一下,但是您错过了SQL的全部意义…

DECLARE @i INT = 0; 
DECLARE @count INT = COUNT(DISTINCT FileID) FROM [EDW].[FileMaster]);
DECLARE @fil varchar(100);
WHILE @i <= @count 
BEGIN 
SET @fil = SELECT DISTINCT FileID FROM [EDW].[FileMaster] 
ORDER BY FileID OFFSET @i ROWS FETCH NEXT 1 ROWS ONLY
SET @i = @i + 1; 
print @fil 
END;

您可以创建一个具有不同fileid的临时表,然后循环使用它

相关内容

  • 没有找到相关文章

最新更新