我有以下代码,其中我试图替换光标,我想迭代地逐个遍历每个字段,并每次将该单个字段的输出分配给变量@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的临时表,然后循环使用它